diff --git a/example/lib/data/local/local_gantt_repository.dart b/example/lib/data/local/local_gantt_repository.dart
index 42e232b..e32cebb 100644
--- a/example/lib/data/local/local_gantt_repository.dart
+++ b/example/lib/data/local/local_gantt_repository.dart
@@ -2,7 +2,6 @@ import 'dart:ui';
 
 import 'package:legacy_gantt_chart/legacy_gantt_chart.dart';
 import 'package:synchronized/synchronized.dart';
-import 'package:legacy_gantt_protocol/legacy_gantt_protocol.dart';
 
 import 'gantt_db.dart';
 
diff --git a/example/lib/view_models/gantt_view_model.dart b/example/lib/view_models/gantt_view_model.dart
index 6b206f0..53ed049 100644
--- a/example/lib/view_models/gantt_view_model.dart
+++ b/example/lib/view_models/gantt_view_model.dart
@@ -2412,7 +2412,7 @@ class GanttViewModel extends ChangeNotifier {
   Future<void> _performMerkleSync() async {
     if (_syncClient == null) return;
     print('Initiating Merkle Sync...');
-    
+
     // We compute the local tree based on the currently loaded data
     // OR we could force a fresh fetch from DB if needed, but watch streams keep this up-to-date.
     try {
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
index d0a7bbd..01ff58e 100644
--- a/example/pubspec.yaml
+++ b/example/pubspec.yaml
@@ -20,7 +20,8 @@ dependencies:
   legacy_context_menu: ^2.1.2
   legacy_gantt_chart:
     path: ../
-  legacy_gantt_protocol: ^1.0.6
+  legacy_gantt_protocol:
+    path: ../../legacy_gantt_protocol
   legacy_timeline_scrubber: ^2.0.0
   legacy_tree_grid: 0.14.1
   path: ^1.9.1
diff --git a/lib/src/sync/websocket_gantt_sync_client.dart b/lib/src/sync/websocket_gantt_sync_client.dart
index 1a2b5a9..e87960c 100644
--- a/lib/src/sync/websocket_gantt_sync_client.dart
+++ b/lib/src/sync/websocket_gantt_sync_client.dart
@@ -192,7 +192,7 @@ class WebSocketGanttSyncClient implements GanttSyncClient {
                 final prefix = dataMap['prefix'] as String;
                 final childrenDynamic = dataMap['children'] as Map;
                 final children = childrenDynamic.map((k, v) => MapEntry(k.toString(), v.toString()));
-                
+
                 if (_merkleNodeCompleters.containsKey(prefix)) {
                   if (!_merkleNodeCompleters[prefix]!.isCompleted) {
                     _merkleNodeCompleters[prefix]!.complete(children);
@@ -301,12 +301,12 @@ class WebSocketGanttSyncClient implements GanttSyncClient {
   Future<Map<String, String>> _getMerkleNodeChildren(String prefix) async {
     final completer = Completer<Map<String, String>>();
     _merkleNodeCompleters[prefix] = completer;
-    
+
     _channel!.sink.add(jsonEncode({
       'type': 'GET_MERKLE_NODE',
       'data': {'prefix': prefix},
     }));
-    
+
     return completer.future.timeout(const Duration(seconds: 10));
   }
 
@@ -320,13 +320,13 @@ class WebSocketGanttSyncClient implements GanttSyncClient {
   @override
   Future<void> syncWithMerkle({required MerkleTree localTree}) async {
     if (_channel == null) throw Exception('Not connected');
-    
+
     final remoteRoot = await getMerkleRoot();
     if (localTree.root.hash == remoteRoot) {
       print('Merkle Sync: Perfect match at root');
       return;
     }
-    
+
     print('Merkle Sync: Root mismatch, starting traversal');
     await _traverseMerkleNode('', localTree);
   }
@@ -341,12 +341,12 @@ class WebSocketGanttSyncClient implements GanttSyncClient {
     final remoteChildrenRaw = await _getMerkleNodeChildren(prefix);
     final localNode = localTree.getNode(prefix);
     final localChildrenHashes = localNode?.children.map((k, v) => MapEntry(k, v.hash)) ?? {};
-    
+
     for (final remoteChildEntry in remoteChildrenRaw.entries) {
       final childPrefix = remoteChildEntry.key;
       final remoteHash = remoteChildEntry.value;
       final localHash = localChildrenHashes[childPrefix];
-      
+
       if (localHash != remoteHash) {
         await _traverseMerkleNode(childPrefix, localTree);
       }
diff --git a/pubspec.yaml b/pubspec.yaml
index 39ba989..d95fbfb 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -22,7 +22,8 @@ dependencies:
     sdk: flutter
   intl: ^0.20.2
   provider: ^6.1.5+1
-  legacy_gantt_protocol: ^1.0.6
+  legacy_gantt_protocol:
+    path: ../legacy_gantt_protocol
   legacy_timeline_scrubber: ^2.0.0
   sqlite_crdt: ^3.0.0
   shelf: ^1.4.2
diff --git a/test/models/legacy_gantt_dependency_test.dart b/test/models/legacy_gantt_dependency_test.dart
index 6a29b8a..20e5597 100644
--- a/test/models/legacy_gantt_dependency_test.dart
+++ b/test/models/legacy_gantt_dependency_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:legacy_gantt_chart/src/models/legacy_gantt_dependency.dart';
+import 'package:legacy_gantt_chart/legacy_gantt_chart.dart';
 
 void main() {
   group('LegacyGanttTaskDependency', () {
@@ -66,8 +66,8 @@ void main() {
       const depNoLag = LegacyGanttTaskDependency(predecessorTaskId: '1', successorTaskId: '2');
       const depWithLag =
           LegacyGanttTaskDependency(predecessorTaskId: '1', successorTaskId: '2', lag: Duration(days: 1));
-      const depWithLastUpdated =
-          LegacyGanttTaskDependency(predecessorTaskId: '1', successorTaskId: '2', lastUpdated: 12345);
+      const depWithLastUpdated = LegacyGanttTaskDependency(
+          predecessorTaskId: '1', successorTaskId: '2', lastUpdated: Hlc(millis: 12345, counter: 0, nodeId: 'test'));
 
       expect(depNoLag, isNot(equals(depWithLag)));
       expect(depNoLag, isNot(equals(depWithLastUpdated)));
@@ -89,7 +89,7 @@ void main() {
           successorTaskId: 's-$type',
           type: type,
           lag: const Duration(hours: 1),
-          lastUpdated: 999,
+          lastUpdated: const Hlc(millis: 999, counter: 0, nodeId: 'test'),
         );
 
         final protocolDep = dependency.toProtocolDependency();
diff --git a/test/sync/offline_gantt_sync_client_test.dart b/test/sync/offline_gantt_sync_client_test.dart
index 7514eb3..1aaca77 100644
--- a/test/sync/offline_gantt_sync_client_test.dart
+++ b/test/sync/offline_gantt_sync_client_test.dart
@@ -335,7 +335,7 @@ void main() {
       final root = await client.getMerkleRoot();
       expect(root, '');
 
-      await client.syncWithMerkle(remoteRoot: 'root', depth: 1);
+      await client.syncWithMerkle(localTree: MerkleTree.build([]));
     });
 
     test('clearQueue and dispose work correctly', () async {
