public boolean send(String destination, byte[] data) {
   mutex.writeLock().lock();
   try {
     String nextHop = routingTable.nextHop(localDevice.getBluetoothAddress(), destination);
     if (nextHop != null) {
       Packet p =
           new Packet(Packet.DATA_PACKET, localDevice.getBluetoothAddress(), destination, data);
       ConnectionHandler handler = connections.get(nextHop);
       if (handler != null) {
         handler.offer(p);
         return true;
       }
     }
   } finally {
     mutex.writeLock().unlock();
   }
   return false;
 }