move presentation mode implementation here, as a schema extender