diff --git a/pkg/format/formatter.go b/pkg/format/formatter.go
index 2b744d1..4adedb1 100644
--- a/pkg/format/formatter.go
+++ b/pkg/format/formatter.go
@@ -94,7 +94,8 @@
 
 	funcmap := template.FuncMap{
 		"timestamp": formatTimestamp,
-		"since":     formatSince}
+		"since":     formatSince,
+		"gosince":   formatGoSince}
 
 	tmpl, err := template.New("output").Funcs(funcmap).Parse(string(format))
 	if err != nil {
diff --git a/pkg/format/formatter_funcs.go b/pkg/format/formatter_funcs.go
index 6d10514..41be2f4 100644
--- a/pkg/format/formatter_funcs.go
+++ b/pkg/format/formatter_funcs.go
@@ -16,9 +16,9 @@
 package format
 
 import (
-	"github.com/golang/protobuf/ptypes"
-	timestamppb "github.com/golang/protobuf/ptypes/timestamp"
 	"time"
+
+	timestamppb "github.com/golang/protobuf/ptypes/timestamp"
 )
 
 // formats a Timestamp proto as a RFC3339 date string
@@ -26,11 +26,12 @@
 	if tsproto == nil {
 		return "", nil
 	}
-	ts, err := ptypes.Timestamp(tsproto)
-	if err != nil {
-		return "", err
-	}
-	return ts.Truncate(time.Second).Format(time.RFC3339), nil
+	return tsproto.AsTime().Truncate(time.Second).Format(time.RFC3339), nil
+}
+
+// Computes the age of a timestamp and returns it in HMS format
+func formatGoSince(ts time.Time) (string, error) {
+	return time.Since(ts).Truncate(time.Second).String(), nil
 }
 
 // Computes the age of a timestamp and returns it in HMS format
@@ -38,9 +39,5 @@
 	if tsproto == nil {
 		return "", nil
 	}
-	ts, err := ptypes.Timestamp(tsproto)
-	if err != nil {
-		return "", err
-	}
-	return time.Since(ts).Truncate(time.Second).String(), nil
+	return time.Since(tsproto.AsTime()).Truncate(time.Second).String(), nil
 }
diff --git a/pkg/model/adapter.go b/pkg/model/adapter.go
new file mode 100644
index 0000000..89ede0a
--- /dev/null
+++ b/pkg/model/adapter.go
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2019-present Ciena Corporation
+ *
+ * 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 model
+
+import (
+	"time"
+
+	"github.com/opencord/voltha-protos/v5/go/voltha"
+)
+
+type AdapterInstance struct {
+	Id                string    `json:"id"`
+	Vendor            string    `json:"vendor"`
+	Type              string    `json:"type"`
+	Version           string    `json:"version"`
+	Endpoint          string    `json:"endpoint"`
+	CurrentReplica    int32     `json:"currentreplica"`
+	TotalReplicas     int32     `json:"totalreplicas"`
+	LastCommunication time.Time `json:"lastcommunication"`
+}
+
+func (a *AdapterInstance) PopulateFrom(val *voltha.Adapter) {
+	a.Id = val.Id
+	a.Vendor = val.Vendor
+	a.Type = val.Type
+	a.Version = val.Version
+	a.Endpoint = val.Endpoint
+	a.CurrentReplica = val.CurrentReplica
+	a.TotalReplicas = val.TotalReplicas
+	a.LastCommunication = time.Unix(val.LastCommunication, 0)
+}
diff --git a/pkg/model/flow.go b/pkg/model/flow.go
index 39bb81b..8869c05 100644
--- a/pkg/model/flow.go
+++ b/pkg/model/flow.go
@@ -17,7 +17,7 @@
 
 import (
 	"fmt"
-	"github.com/opencord/voltha-protos/v4/go/openflow_13"
+	"github.com/opencord/voltha-protos/v5/go/openflow_13"
 )
 
 type FlowFieldFlag uint64
