Cleaner design. Adds basic reader controls

Note: big commit. This was just too messy to divy up unfortunately