Third commit, barebone functionality works, incomplete