make class more abstract and usefull