major changes, everything should be working now