User ctrl refactor - breaks up large methods, moves some logic into model

A new PR  with an effort to salvage refactors/improvements from #1499 by @sirMackk

@sirMackk @SamSaffron @eviltrout

Any feedback or concerns on this ? 

Thanks!