add a few features and a lot of bugs. but fixes old ones