feat: add all main functionality ready for major refactoring and testing