Finished modes refactor from #17