GJP-53: add abstractRectangleController, enable customization via callback