diff --git a/SyncbaseCore/Source/Collection.swift b/SyncbaseCore/Source/Collection.swift
index 557c9be..229f85f 100644
--- a/SyncbaseCore/Source/Collection.swift
+++ b/SyncbaseCore/Source/Collection.swift
@@ -300,7 +300,7 @@
       let cLimitBytes = v23_syncbase_Bytes(
         p: unsafeBitCast(cLimitStr.p, UnsafeMutablePointer<UInt8>.self), n: cLimitStr.n)
       let callbacks = v23_syncbase_CollectionScanCallbacks(
-        handle: v23_syncbase_Handle(oHandle),
+        handle: v23_syncbase_Handle(unsafeBitCast(oHandle, UInt.self)),
         onKeyValue: { Collection.onScanKeyValue($0, kv: $1) },
         onDone: { Collection.onScanDone($0, err: $1) })
       v23_syncbase_CollectionScan(
@@ -321,7 +321,8 @@
   private static func onScanKeyValue(handle: v23_syncbase_Handle, kv: v23_syncbase_KeyValue) {
     let key = kv.key.toString()!
     let valueBytes = kv.value.toNSData()!
-    let handle = Unmanaged<ScanHandle>.fromOpaque(COpaquePointer(handle)).takeUnretainedValue()
+    let handle = Unmanaged<ScanHandle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeUnretainedValue()
     handle.onKeyValue(key, valueBytes: valueBytes)
   }
 
@@ -330,7 +331,8 @@
     if let e = err.toVError() {
       serr = SyncbaseError(e)
     }
-    let handle = Unmanaged<ScanHandle>.fromOpaque(COpaquePointer(handle)).takeRetainedValue()
+    let handle = Unmanaged<ScanHandle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeRetainedValue()
     handle.onDone(serr)
   }
 
diff --git a/SyncbaseCore/Source/Watch.swift b/SyncbaseCore/Source/Watch.swift
index b801500..28bf686 100644
--- a/SyncbaseCore/Source/Watch.swift
+++ b/SyncbaseCore/Source/Watch.swift
@@ -182,7 +182,7 @@
         let cPatterns = try v23_syncbase_CollectionRowPatterns(patterns)
         let cResumeMarker = v23_syncbase_Bytes(resumeMarker)
         let callbacks = v23_syncbase_DbWatchPatternsCallbacks(
-          handle: v23_syncbase_Handle(oHandle),
+          handle: v23_syncbase_Handle(unsafeBitCast(oHandle, UInt.self)),
           onChange: { Watch.onWatchChange($0, change: $1) },
           onError: { Watch.onWatchError($0, err: $1) })
         v23_syncbase_DbWatchPatterns(
@@ -202,7 +202,8 @@
   // the functions inside the passed handle.
   private static func onWatchChange(handle: v23_syncbase_Handle, change: v23_syncbase_WatchChange) {
     let change = change.toWatchChange()
-    let handle = Unmanaged<Watch.Handle>.fromOpaque(COpaquePointer(handle)).takeUnretainedValue()
+    let handle = Unmanaged<Watch.Handle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeUnretainedValue()
     handle.onChange(change)
   }
 
@@ -211,7 +212,8 @@
     if let verr: VError = err.toVError() {
       e = SyncbaseError(verr)
     }
-    let handle = Unmanaged<Watch.Handle>.fromOpaque(COpaquePointer(handle)).takeRetainedValue()
+    let handle = Unmanaged<Watch.Handle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeRetainedValue()
     handle.onError(e)
   }
 }
\ No newline at end of file
