refactor: Split into modules