add retrieve part for user
add type attribute
add type checker
implement Constraint