refactor: split modules