Generalizing out repositioning stuff. A bit nicer. Also supports 'fixed' positioning now... there's a bad hack in here ATM though needs to be fixed.