begin purr style refactoring