refactor shapes to add general convex shape methods