F adv motion

Needs careful reviewing by everyone I think. Probably need documentation and annotation too. 
Squash