more cleaning up and refactoring, BaseShape -> Shape