public synchronized void start() throws Exception {
    String peername = peerLocator.toString();
    AgentTransportManager tm = new DefaultAgentTransportManager(peername, peerLocator, seedLocator);

    peer = new AgentPeer(peername, tm, new File("."));

    MSkipGraph<Destination, ComparableKey<?>> sg =
        (MSkipGraph<Destination, ComparableKey<?>>) tm.getOverlay("MSG");

    ha = new SimpleAnycast<>(sg);

    logger.info("Peer ID       : {}", peer.getPeerId().toString());

    // crate agent
    peer.join();

    active = true;
  }