initial commit

includes base class and 2 subclasses