separated classes with action listener