refresh #1

redo of existing classes into more inheritable and understandable types