+ valid_user() staticmethod to factor out __init__ checks and allow reuse for profiles
reordered methods better, added grouping headers
intermediary cleanup for {define,update}_profile