public void moveElement(Element element, Direction direction) {
		if (element == null || direction == null)
			throw new IllegalArgumentException("The given parameters are invalid!");
		if (!canMoveElement(element, direction))
			throw new IllegalArgumentException("This element can't move in the given direction!");

		final Position to = direction.newPosition(getElementPosition(element));
		
		for (Element e : getElementsOnPosition(to)) {
			if (e instanceof Collide) {
				((Collide) e).collideWith(element);
				if (e instanceof Teleporter)
					return;
			}
		}
		
		if (getElementPosition(element) != null)
			updateElementPosition(element, to);
	}