initial
a bit of refactoring, added  subclasses for Frame