user classes implementation