add new clasess and refactor old.