diff --git a/internal/pkg/impl/reflow.go b/internal/pkg/impl/reflow.go
new file mode 100644
index 0000000..e178054
--- /dev/null
+++ b/internal/pkg/impl/reflow.go
@@ -0,0 +1,50 @@
+/*
+ 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 impl
+
+import "gerrit.opencord.org/abstract-olt/models"
+
+/*
+Reflow - takes internal config and resends to xos
+*/
+func Reflow() (bool, error) {
+	myChan := getSyncChannel()
+	<-myChan
+	defer done(myChan, true)
+	chassisMap := models.GetChassisMap()
+	for _, chassisHolder := range *chassisMap {
+		physical := chassisHolder.PhysicalChassis
+		for index := range physical.Linecards {
+			olt := physical.Linecards[index]
+			physical.SendOltTosca(olt)
+			for portIndex := range olt.Ports {
+				port := olt.Ports[portIndex]
+				for ontIndex := range port.Onts {
+					ont := port.Onts[ontIndex]
+					if ont.Active {
+						physical.SendOntTosca(ont)
+						physical.SendSubscriberTosca(ont)
+
+					}
+
+				}
+
+			}
+		}
+	}
+	return true, nil
+	//TODO lots of this could throw errors
+}
