WIP
Finish first implementation