shape base class