we'd probably have an abstract model to use