refactor(architecture): make it modular