update readme
refactored and add subclasses