diff --git a/.compose/yugabytedb-minimal.yml b/.compose/yugabytedb-minimal.yml
index f3337a7..dd13ab2 100644
--- a/.compose/yugabytedb-minimal.yml
+++ b/.compose/yugabytedb-minimal.yml
@@ -31,6 +31,8 @@ services:
     container_name: yb-master-2
     networks:
       - yb-client-minimal
+    ports:
+      - 7101:7100
     command: [ "/home/${YB_USER}/bin/yb-master",
       "--callhome_enabled=false",
       "--fs_data_dirs=${YB_MOUNT_PREFIX}/master",
@@ -48,6 +50,8 @@ services:
     container_name: yb-master-3
     networks:
       - yb-client-minimal
+    ports:
+      - 7102:7100
     command: [ "/home/${YB_USER}/bin/yb-master",
       "--callhome_enabled=false",
       "--fs_data_dirs=${YB_MOUNT_PREFIX}/master",
diff --git a/utils/hybridtime/hybrid_time.go b/utils/hybridtime/hybrid_time.go
index ed6dafc..faabda5 100644
--- a/utils/hybridtime/hybrid_time.go
+++ b/utils/hybridtime/hybrid_time.go
@@ -38,3 +38,18 @@ func AddDuration(ht uint64, d time.Duration) uint64 {
 func SubstractDuration(ht uint64, d time.Duration) uint64 {
 	return ht - ClockTimestampToHTTimestamp(uint64(d.Microseconds()))
 }
+
+// UnixTimeFromHT takes a hybrid time and returns time.Time.
+// Nanoseconds are lost in this conversion.
+func UnixTimeFromHT(ht uint64) time.Time {
+	uints := HTTimestampToPhysicalAndLogical(ht)
+	sec := int64(uints[0] / 1000000)
+	return time.Unix(sec, 0)
+}
+
+// UnixTimeToHT takes a time.Time and returns a hybrid time.
+// Nanoseconds are lost in this conversion.
+func UnixTimeToHT(t time.Time) uint64 {
+	// drop nanoseconds:
+	return PhysicalAndLogicalToHTTimestamp(uint64(t.Unix()*1000000), 0)
+}
diff --git a/utils/hybridtime/hybrid_time_test.go b/utils/hybridtime/hybrid_time_test.go
new file mode 100644
index 0000000..3b8bdbe
--- /dev/null
+++ b/utils/hybridtime/hybrid_time_test.go
@@ -0,0 +1,36 @@
+package hybridtime
+
+import (
+	"testing"
+	"time"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestHybridTime(t *testing.T) {
+
+	t.Run("it=handles fixed point in time", func(tt *testing.T) {
+		// this is a fixed server clock pointing at exactly '2021-12-03 00:27:34 +0000 UTC':
+		fixedPointInTime := uint64(6711260180246810624)
+		resultTime := UnixTimeFromHT(fixedPointInTime)
+		assert.Equal(tt, "2021-12-03 00:27:34 +0000 UTC", resultTime.UTC().String())
+	})
+
+	t.Run("it=converts times correctly", func(tt *testing.T) {
+		now := time.Now().UTC()
+		resultHT := UnixTimeToHT(now)
+		resultTime := UnixTimeFromHT(resultHT)
+		assert.Equal(tt, now.Unix(), resultTime.Unix())
+	})
+
+	t.Run("it=handles add and substract", func(tt *testing.T) {
+		now := time.Now().UTC()
+		resultHT := UnixTimeToHT(now)
+		afterAddHT := AddDuration(resultHT, time.Duration(time.Hour*48))
+		afterSubstractHT := SubstractDuration(afterAddHT, time.Duration(time.Hour*48))
+		resultTime := UnixTimeFromHT(afterSubstractHT)
+		assert.Equal(tt, now.Unix(), resultTime.Unix())
+
+	})
+
+}