Refactor

- Code refactor
- Changed hard-coded dependencies to start using dependency-injected properties
- Added documentation & documentation boilerplate