private void checkForSnakeCollisions()
	{
		//TODO Refactoring

		Snake snakeOne = snakes.get(0);
		Snake snakeTwo = snakes.get(1);

		boolean collisionSnakeOneWithItself;
		boolean collisionSnakeOneWithSnakeTwo;
		boolean collisionSnakeTwoWithItself;
		boolean collisionSnakeTwoWithSnakeOne;

		SnakePiece headOne = snakeOne.getHead();
		SnakePiece headTwo = snakeTwo.getHead();

		if (snakeOne.isPhased())
		{
			collisionSnakeOneWithItself = false;
			collisionSnakeOneWithSnakeTwo = false;
		}

		else
		{
			collisionSnakeOneWithItself = headIntersectsSnake(headOne, snakeOne);
			collisionSnakeOneWithSnakeTwo = headIntersectsSnake(headOne, snakeTwo);

		}
		if (snakeTwo.isPhased())
		{
			collisionSnakeTwoWithItself = false;
			collisionSnakeTwoWithSnakeOne = false;
		}
		else
		{
			collisionSnakeTwoWithItself = headIntersectsSnake(headTwo, snakeTwo);
			collisionSnakeTwoWithSnakeOne = headIntersectsSnake(headTwo, snakeOne);
		}

		if (collisionSnakeOneWithSnakeTwo && collisionSnakeTwoWithSnakeOne)
		{
			controller.processFailureOfSnake(null);
		}
		else if (collisionSnakeOneWithItself || collisionSnakeOneWithSnakeTwo)
		{
			controller.processFailureOfSnake(snakeOne);
			controller.punishSnakeForHittingSnake(snakeOne);
		}
		else if (collisionSnakeTwoWithItself || collisionSnakeTwoWithSnakeOne)
		{
			controller.processFailureOfSnake(snakeTwo);
			controller.punishSnakeForHittingSnake(snakeTwo);
		}

	}