almost there, some small buggs but close :D