made a lot of big changes, have some bugs