anchor.diff:  				jumpMultiplier = 1;
   			}
   
  -			if(jumpTimer == null)
  -				jumpTimer = new Timer(new Duration(seconds:3), ()
  -				{
  -					// normal jump
  -					jumpcount = 0;
  -					jumpTimer.cancel();
  -					jumpTimer = null;
  +			if(jumpTimer == null) {
  +				// start timer
  +				jumpTimer = new Timer(new Duration(seconds:3), () {
  +				// normal jump
  +				jumpcount = 0;
  +				jumpTimer.cancel();
  +				jumpTimer = null;
   				});
  -			if(jumpcount == 2)
  -			{
  +			}
  +			if(jumpcount == 2) {
   				// triple jump
   				if (querySelector("#buff-pie") == null && querySelector("#buff-spinach") == null) {
   					yVel = -1560;
  
positive.code: 		return Future.wait(futures);
  	}
  
  	update(double dt)
  	{
  		num cameFrom = posY;
  
  		//show chat message if it exists and decrement it's timeToLive
  		if(chatBubble != null)
  			chatBubble.update(dt);
  
  		if(doPhysicsApply && inputManager.upKey == true)
  		{
  			bool found = false;
  			Rectangle playerRect = new Rectangle(posX,posY+currentStreet.streetData['dynamic']['ground_y'],width,height-15);
  			for(Ladder ladder in currentStreet.ladders)
  			{
  				if(intersect(ladder.bounds,playerRect))
  				{
  					//if our feet are above the ladder, stop climbing
  					if(playerRect.top+playerRect.height < ladder.bounds.top)
  						break;
  
  					posY -= speed/4 * dt;
  					climbingUp = true;
  					activeClimb = true;
  					jumping = false;
  					found = true;
  					break;
  				}
  			}
  			if(!found)
  			{
  				climbingUp = false;
  				climbingDown = false;
  				activeClimb = false;
  			}
  		}
  
  		if(doPhysicsApply && inputManager.downKey == true)
  		{
  			bool found = false;
  			Rectangle playerRect = new Rectangle(posX,posY+currentStreet.streetData['dynamic']['ground_y'],width,height);
  			for(Ladder ladder in currentStreet.ladders)
  			{
  				if(intersect(ladder.bounds,playerRect))
  				{
  					//if our feet are below the ladder, stop climbing
  					if(playerRect.top+playerRect.height > ladder.bounds.top+ladder.bounds.height)
  					break;
  
  					posY += speed/4 * dt;
  					climbingDown = true;
  					activeClimb = true;
  					jumping = false;
  					found = true;
  					break;
  				}
  			}
  			if(!found)
  			{
  				climbingDown = false;
  				climbingUp = false;
  				activeClimb = false;
  			}
  		}
  
  		if(doPhysicsApply && inputManager.downKey == false && inputManager.upKey == false)
  		{
  			bool found = false;
  			Rectangle playerRect = new Rectangle(posX,posY+currentStreet.streetData['dynamic']['ground_y'],width,height);
  			for(Ladder ladder in currentStreet.ladders)
  			{
  				if(intersect(ladder.bounds,playerRect))
  				{
  					found = true;
  					break;
  				}
  			}
  			if(!found)
  			{
  				climbingDown = false;
  				climbingUp = false;
  			}
  			activeClimb = false;
  		}
  
  		if(inputManager.rightKey == true)
  		{
  			posX += speed * dt;
  			facingRight = true;
  			moving = true;
  		}
  		else if(inputManager.leftKey == true)
  		{
  			posX -= speed * dt;
  			facingRight = false;
  			moving = true;
  		}
  		else
  			moving = false;
  
  		//primitive jumping
  		if (inputManager.jumpKey == true && !jumping && !climbingUp && !climbingDown)
  		{
  			num jumpMultiplier;
  			if (querySelector("#buff-pie") != null && querySelector("#buff-spinach") != null) {
  				jumpMultiplier = 1;
  
negative.code: 				jumpTimer = null;
  				audio.playSound('tripleJump');
  			}
  			else {
  				// normal jump
  				jumpcount++;
  				yVel = -1000 * jumpMultiplier;
  