public boolean remove(int userId) {
		Contact contact = userIdMap.get(userId);
		
		if (contact == null)
			return false;
		
		userIdMap.remove(userId);
		
		if (contact.displayName != null)
			displayNameMap.get(contact.displayName).remove(contact);
		
		if (contact.firstName != null)
			firstNameMap.get(contact.firstName).remove(contact);
		
		if (contact.lastName != null)
			lastNameMap.get(contact.lastName).remove(contact);
		
		if (contact.email != null)
			emailMap.get(contact.email).remove(contact);
		
		if (contact.phoneNumber != null)
			phoneNumberMap.get(contact.phoneNumber).remove(contact);
		
		// return the user ID to be reused
		userIdMinHeap.add(userId);
		
		return true;
	}