don't validate undefined optional fields
support running showcase as a lib; support custom middleware