@Override
    public IChordNode findSuccessor(IKey id) throws RemoteException {
        System.out.println("Find successor of id: " + id.toDecString());

        if (predecessor != null && id.isBetween(predecessor.getId(), this.getId())) {
            return this;
        } else if (id.isBetween(getId(), getSuccessor().getId())) {
            return getSuccessor();
        } else {
            // forward the query around the circle
            IChordNode m = closetPrecedingNode(id);
            return m.findSuccessor(id);
        }
    }