Things that needs to be done for completing the fetch block implementation:
1) the goal position is chosen randomly at the beginning (rather than having a group of agents which decide together);
2) there is no memory of the path the agent has already tried, so it may happen that it goes in a loop if after avoiding an obstacle the best way with the manhattan distance is going back to the same obstacle;
3) there is no check of the actions' result, and it is always supposed the action was a success.
Things that needs to be done for completing the fetch block implementation: 1) the goal position is chosen randomly at the beginning (rather than having a group of agents which decide together); 2) there is no memory of the path the agent has already tried, so it may happen that it goes in a loop if after avoiding an obstacle the best way with the manhattan distance is going back to the same obstacle; 3) there is no check of the actions' result, and it is always supposed the action was a success.