public void handleIntersection() {
   TDir curDir = car.getDirection();
   TileModel curTile = car.currTileOnMap();
   if (curTile.isOpen(curDir.rightTurn())) {
     Log.v("BRAIN", "Turning right");
     car.makeTurn(curDir.rightTurn());
   } else if (curTile.isOpen(curDir)) {
     Log.v("BRAIN", "Continuing through intersection because cant turn right");
     car.driveAlong();
   } else if (curTile.isOpen(curDir.leftTurn())) {
     Log.v("BRAIN", "Turning left because can't go straight or right");
     car.makeTurn(curDir.leftTurn());
   } else {
     Log.v("BRAIN", "Stopping because there's nowhere to go");
     car.comeToStop();
   }
 }
 /*
  * This is the key algorithm.
  */
 @Override
 public void onTimePassed(TimerHandler pTimerHandler) {
   car.updateRoadmapTile();
   if (!car.isDriving()) return;
   if (car.isTurning()) {
     car.handleTurn2();
   } else if (car.atIntersection()) {
     Log.v("BRAIN", "Passing Intersection at: " + car.toString());
     handleIntersection();
   } else if (car.atDeadEnd()) {
     Log.v("BRAIN", "Dead end going: " + car.getDirection() + ", at:" + car.toString());
     car.comeToStop();
   } else {
     car.driveAlong();
   }
 }