just a few bugs left, mostly working