refactoring push pull classes