use camine to implement the model