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

        if (bootstrapList.isEmpty()) //CA wasn't contacted
        {
            //bootstrap list is get from formerly known contacts 
            bootstrapList = node.getRouteTable().getAllBucketContacts();
            //node.getRouteTable().clear(); //the route table will be filled with new contacts
        }

        //System.out.println("OOO " + node.getRouteTable().size());
        //for (Contact c : bootstrapList)
        //	System.out.println("----" + c);
        //while (!bootstrapList.isEmpty() && !bootstrapped)
        for (Contact c : bootstrapList)
        {
            node.getRouteTable().add(c);
            //System.out.println(">>> " + node.getRouteTable());
            try
            {
                Collection<Contact> contacts = node.lookup(node.getNodeId()).get();
                if (contacts != null && contacts.size() != 0)
                {
                    bootstrapped = true;
                    break;
                }
                else
                {
                    node.getRouteTable().remove(c);
                }
            }
            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");
            try
            {
                node.getRouteTable().resetRefreshTimes();
                Collection<NodeId> toRefresh = node.getRouteTable().getRefreshIDs(true);
                for (NodeId id : toRefresh)
                {
                    node.lookup(id).get();
                }

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

            return true;
        }
        else
        {
            System.out.println(userId + " -  Bootstrap Failed!");
            return false;
        }

    }