Shape is now a pure abstract class for general abstract shapes