user abstract class