refactor: split into separate files
doc: docs updated