need to re-design the model!