made a bunch of changes but not complete yet