private void storageMaintenance()
    {
        Storage storage = node.getStorage();
        long currentTime = System.currentTimeMillis();
        
        synchronized (storage)
        {
            for (StorageEntry entry : storage.values())
            {
                if (entry.isExpired())
                    storage.remove(entry);
                else if (currentTime - entry.getLastRepublishTime() > CONTENT_REPUBLISH_PERIOD)
                {
                	Collection<Contact> nearestNodes =  node.getRouteTable().select(node.getNodeId(), K);
                	for (Contact c : nearestNodes)
                	{
                		try
                		{
                			node.store(c, entry);
                		}
                		catch(IOException ioe)
                		{
                			System.err.println("StorageCleaner : REPLICA STORE FAILED!");
                		}
                	}
                }
            }
        }
    }