diff --git a/internal/pkg/chassisSerialize/serialize.go b/internal/pkg/chassisSerialize/serialize.go
new file mode 100644
index 0000000..6e947a5
--- /dev/null
+++ b/internal/pkg/chassisSerialize/serialize.go
@@ -0,0 +1,47 @@
+/*
+   Copyright 2017 the original author or authors.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+package chassisSerialize
+
+import (
+	"encoding/json"
+
+	"gerrit.opencord.org/abstract-olt/models/abstract"
+)
+
+func Serialize(chassis *abstract.Chassis) ([]byte, error) {
+	return json.Marshal(chassis)
+}
+
+func Deserialize(jsonData []byte) (*abstract.Chassis, error) {
+	var chassis abstract.Chassis
+	err := json.Unmarshal(jsonData, &chassis)
+
+	for i := 0; i < len(chassis.Slots); i++ {
+		var slot *abstract.Slot
+		slot = &chassis.Slots[i]
+		slot.Parent = &chassis
+		for j := 0; j < len(slot.Ports); j++ {
+			var port *abstract.Port
+			port = &slot.Ports[j]
+			port.Parent = slot
+			for k := 0; k < len(port.Onts); k++ {
+				port.Onts[k].Parent = port
+			}
+		}
+	}
+
+	return &chassis, err
+}
diff --git a/internal/pkg/settings/Settings.go b/internal/pkg/settings/Settings.go
new file mode 100644
index 0000000..f1f7f72
--- /dev/null
+++ b/internal/pkg/settings/Settings.go
@@ -0,0 +1,33 @@
+/*
+   Copyright 2017 the original author or authors.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+package settings
+
+var debug = false
+
+/*
+SetDebug - sets debug setting
+*/
+func SetDebug(logDebug bool) {
+	debug = logDebug
+}
+
+/*
+GetDebug returns debug setting
+*/
+func GetDebug() bool {
+	return debug
+}
