public boolean bootstrap2()
    {
        String userId = node.getUserId();
        boolean bootstrapped = false;
        System.out.println(userId + ": Bootstrapping...");

        for (Contact c : bootstrapList)
        {
            node.getRouteTable().add(c);
        }

        //while (!bootstrapList.isEmpty() && !bootstrapped)
        for (Contact c : bootstrapList)
        {
            try
            {
                if (node.lookup(node.getNodeId()).get() != null)
                {
                    bootstrapped = true;
                    break;
                }
            }
            catch (Exception e)
            {
                System.out.println(userId + ": 1st Bootstrap phase attempt failed!");
                //e.printStackTrace();
            }
            finally
            {
                node.getRouteTable().remove(c);
            }
        }

        if (bootstrapped)
        {
            System.out.println(userId + ": End 1st phase Bootstrap");
        }
        else
        {
            System.out.println(userId + ": Bootstrap Failed!");
            return false;
        }

        try
        {
            node.getRouteTable().resetRefreshTimes();
            Collection<NodeId> toRefresh = node.getRouteTable().getRefreshIDs(true);
            for (NodeId id : toRefresh)
            {
                node.lookup(id);
            }

            System.out.println(userId + ": End 2nd phase Bootstrap");
        }
        catch (Exception e)
        {
            System.out.println(userId + ": Bootstrap failed!");
            return false;
        }

        return true;
    }