refactor: split classes