Major update to the model layer backing the API. Lots of reflection and magic going on now to make it more flexible and extensible in the future.