F adv motion

Needs careful reviewing by everyone I think. Probably need documentation and annotation too. 
Can pull this out as a constant to avoid recalculating every time