sort of MVC-ish now