changed shape to return Maybe Shape.
added 'trapping'. changed 'assert' to 'preventing'.

There is an 'assert' in Control.Exception that has compiler support to
turn on and off.