introduced IShape -> refactoring