bunch of changes but it still sucks