diff --git a/device/device_olt.go b/device/device_olt.go
index b3dc2c3..719f67b 100644
--- a/device/device_olt.go
+++ b/device/device_olt.go
@@ -21,13 +21,14 @@
 	"sync"
 )
 
-type DeviceState int
+//State represents the OLT States
+type State int
 
 // Device interface provides common methods for OLT and ONU devices
 type Device interface {
 	Initialize()
-	UpdateIntState(intstate DeviceState)
-	GetIntState() DeviceState
+	UpdateIntState(intstate State)
+	GetIntState() State
 	GetDevkey() Devkey
 }
 
@@ -46,10 +47,10 @@
 	SerialNumber       string
 	Manufacture        string
 	Name               string
-	InternalState      DeviceState
+	InternalState      State
 	OperState          string
-	NniIntfs           []nniIntf
-	PonIntfs           []ponIntf
+	NniIntfs           []Port
+	PonIntfs           []Port
 	HeartbeatSignature uint32
 	mu                 *sync.Mutex
 }
@@ -68,21 +69,21 @@
 	NniLosRaised
 )
 
-type ponIntf struct {
+// Port info for NNI and PON ports
+type Port struct {
 	Type       string
 	IntfID     uint32
 	OperState  string
 	AlarmState AlarmState
+	PortStats  PortStats
 }
 
-type nniIntf struct {
-	Type       string
-	IntfID     uint32
-	OperState  string
-	AlarmState AlarmState
+// PortStats for NNI and PON ports
+type PortStats struct {
+	Packets uint64
 }
 
-// Constants for port types
+// Constants for Port types
 const (
 	IntfPon = "pon"
 	IntfNni = "nni"
@@ -96,9 +97,9 @@
 
 // Constants for OLT states
 const (
-	OLT_INACTIVE  DeviceState = iota // OLT/ONUs are not instantiated
-	OLT_PREACTIVE                    // Before PacketInDaemon Running
-	OLT_ACTIVE                       // After PacketInDaemon Running
+	OltInactive  State = iota // OLT/ONUs are not instantiated
+	OltPreactive              // Before PacketInDaemon Running
+	OltActive                 // After PacketInDaemon Running
 )
 
 // OLTAlarmStateToString is used to get alarm state as string
@@ -116,12 +117,12 @@
 	olt.NumPonIntf = npon
 	olt.NumNniIntf = nnni
 	olt.Name = "BBSIM OLT"
-	olt.InternalState = OLT_INACTIVE
+	olt.InternalState = OltInactive
 	olt.OperState = "up"
 	olt.Manufacture = "BBSIM"
 	olt.SerialNumber = "BBSIMOLT00" + strconv.FormatInt(int64(oltid), 10)
-	olt.NniIntfs = make([]nniIntf, olt.NumNniIntf)
-	olt.PonIntfs = make([]ponIntf, olt.NumPonIntf)
+	olt.NniIntfs = make([]Port, olt.NumNniIntf)
+	olt.PonIntfs = make([]Port, olt.NumPonIntf)
 	olt.HeartbeatSignature = oltid
 	olt.mu = &sync.Mutex{}
 	for i := uint32(0); i < olt.NumNniIntf; i++ {
@@ -141,7 +142,7 @@
 
 // Initialize method initializes NNI and PON ports
 func (olt *Olt) Initialize() {
-	olt.InternalState = OLT_INACTIVE
+	olt.InternalState = OltInactive
 	olt.OperState = "up"
 	for i := uint32(0); i < olt.NumNniIntf; i++ {
 		olt.NniIntfs[i].IntfID = i
@@ -158,7 +159,7 @@
 }
 
 // GetIntState returns internal state of OLT
-func (olt *Olt) GetIntState() DeviceState {
+func (olt *Olt) GetIntState() State {
 	olt.mu.Lock()
 	defer olt.mu.Unlock()
 	return olt.InternalState
@@ -170,7 +171,7 @@
 }
 
 // UpdateIntState method updates OLT internal state
-func (olt *Olt) UpdateIntState(intstate DeviceState) {
+func (olt *Olt) UpdateIntState(intstate State) {
 	olt.mu.Lock()
 	defer olt.mu.Unlock()
 	olt.InternalState = intstate
