(define-page out in #!optional reader renderer) 'reader' is called with 'in' as it's only argument. A universal reader can be defined as default which tests whether in is an string or an sexpr. It if it's a string it reads it as a file with a part reader based on mime type or file extension. If it's an sexpr then 'reader' just evaluates to 'identity'. If the reader detects the filename is one to be copied then it produces sxml which represents that and leaves it up to the renderer to do the copying.