WIP
WIP: add comments
WIP: fix code
WIP
WIP