public SyncProtocol(SyncPeer self, SyncPeer other, StoreInterface<V> stor, MoverInterface<V> mover) throws Exception {
        this.self = self;
        this.other = other;
        this.stor = stor;
        this.mover = mover;
        if(!mover.getStore().sameSet(stor.getSetID())) throw new Exception("Mover set mismatch");
        resetTimer(INITSYNC);
        syncThread = new Thread() {
            public void run() {
                this.setName("Sync Thread");
                while (stopAll == false) {
                    try {
                        recv(sqin.take());
                    } catch (InterruptedException e) {
                        System.out.println("Sync Thread Interrupted");
                        return;
                    } catch (Exception e) {
                        e.printStackTrace();
                        return;
                    }
                }
            }
        };
        syncThread.start();
    }