abstract some useful models,just for learn...