more improvment in elem_type class