Implement reason and state functions on the model