F adv motion

Needs careful reviewing by everyone I think. Probably need documentation and annotation too. 
What's this copy constructor for again?