splitted into two classes