anchor.diff:  %% Internal functions
   %% ====================================================================
   
  -move(Direction, State) ->
  -	%% TODO perform move
  -	MoveSpeed = bc_entity_config:move_speed(BcEntityConfig),
  -	MoveDelay = 1000 * MoveSpeed,
  -	TimerRef = gen_fsm:send_event_after(MoveDelay, action),
  -	{next_state, moving, State#state{timer = TimerRef}}.
  +sense(State) ->
  +	%% TODO implement sense phase
  +	{next_state, standing, State}.
  +
  +move(Direction, #state{entity = BcEntity, map = BcMap} = State) ->
  +	OriginalBcCollision = bc_entity:to_collision(BcEntity),
  +	UpdatedBcCollision = bc_collision:move(Direction, BcCollision),
  +	case bc_map:update_collision(BcMap, OriginalBcCollision, UpdatedBcCollision) of
  +		ok ->
  +			UpdatedBcVertices = bc_collision:vertices(UpdatedBcCollision),
  +			UpdatedBcEntity = bc_entity:set_vertices(UpdatedBcVertices, BcEntity),
  +			{ok, UpdatedBcEntity};
  +		{error, _} = Error ->
  +			Error
  +	end.
  
positive.code: no_action(action_complete, State) ->
  	{next_state, no_action, State}.
  
  standing(action_complete, State) ->
  	move(down, State).
  
  moving(action_complete, State) ->
  	%% TODO move and publish event
  	{next_state, standing, State}.
  
  handle_event(Event, StateName, StateData) ->
      {next_state, StateName, StateData}.
  
negative.code: -behaviour(gen_fsm).
  
  -export([init/1, 
  		 no_action/2,
  		 standing/2,
  		 moving/2, 
  		 
  		 %% TODO implement actions/3
  		  
  		 handle_event/3, 
  		 handle_sync_event/4, 
  		 handle_info/3, 
  