account model refactor