public boolean canEnter(UUID playerUUID, Location location) {

		// check if player is in a GP claim
		if (!check(location)) {
			return true;
		}

		long claimid = getGPClaimId(location);

		// check if player is in a claim
		if (claimid != -1L) {
			return true;
		}
		
		String playerUUIDString = playerUUID.toString();

		// fee to enter
		//double charge = plugin.ccFlags.getCharge(claimid);

		// player is the owner?
		UUID owner = getOwner(location);
		boolean isOwner = false;
		if(owner.toString().equalsIgnoreCase(playerUUIDString)) {
			isOwner = true;
		}

		// claim is private?
		boolean isPrivate = plugin.getCcFlags().getPrivate(claimid);

		// System.out.println("isPrivate:" + isPrivate);
		// System.out.println("isOwner:" + isOwner);
		// System.out.println("charge:" + charge);

		// is the claim private or is the claim charged
		if ((!isPrivate/* && charge == 0*/) || isOwner) {
			// System.out.println("checkpoint 1");

			// the player isn't on deny list
			if (!plugin.getCcFlags().getDeny(claimid, playerUUIDString).equalsIgnoreCase(playerUUIDString) || isOwner) {
				// they may enter
				// System.out.println("checkpoint 1.1");
				return true;
			}
			/*
			 * } else if (charge > 0 && !getOwner(location).equalsIgnoreCase(playerName)) {
			 * 
			 * // TODO: allow them to enter and save a timer somehow String time = plugin.ccFlags.getTime(claimid); String timeText; if (time == "forever") { timeText = "forever"; } else { timeText =
			 * " for " + time + " minutes."; } player.sendMessage(ChatColor.RED + "It costs " + plugin.econ.format(charge).toString() + " to enter that area " + timeText +
			 * ". Type /acceptcharge to accept the charge and enter.");
			 */
		} else if (isPrivate) {
			// System.out.println("checkpoint 2");

			// the player is on allow list
			if (plugin.getCcFlags().getAllow(claimid, playerUUIDString).equalsIgnoreCase(playerUUIDString)) {
				// they may enter
				// System.out.println("checkpoint 2.1");
				return true;
			}

			/*
			 * if(player != null) { player.sendMessage(ChatColor.RED + "This is a private claim!"); }
			 */
		}

		// System.out.println("checkpoint 3");
		return false;
	}