move the shape stuff in to its own library