modeling the data and making nice interfaces.