Finally clean up and add user variant.

Full function now, lots of thanks to @madmack, everyone in @TeamLGOG.