separate the model into three models