current state (not fully working, but quite some progress!)