implement User and UserGen