public Turn[] getValidTurns(int position) {
		Set<Turn> turns = new TreeSet<Turn>(Arrays.asList(Turn.values()));
		Set<Turn> badTurns = new HashSet<Turn>();
		Point p = getPoint(position);
		Direction initialDir = getDir(position);
		int i = 0;
		for(Point testPoint: this) {
			if(i++ > position) break;
			for(Turn t: turns){
				if(testPoint.equals(t.getDirection(initialDir).move(p))) badTurns.add(t);
			}
			turns.removeAll(badTurns);
		}
		return turns.toArray(new Turn[0]);
	}