Added Perhaps and supporting constructs.