refactoring and lotsa new stuff

this needs to be reworked a bit, proof of concept