everything should be abstracted, codebase needs a lot of cleaning
add i notes
ok, working