Extra credit 2 is mostly done, just need to catch some other cases