I promise to make all this boilerplate go away eventually. :-(