first pass on person factory
bug fix person refactoring, and add editable_by_users to abstract person to replace code taken out