Refactoring behavior to use functional obj construction