extracted responsibilities in different classes