It is based on type classes and can it be tuned by providing instances, for example, instances can be provided to mark that certain expressions are closed.