rewriting a bunch of the data layer and adding an admin interface