more behavior refactoring