WIP
Refactored