code: func NewHandler(opts ...handlerOption) (*Handler, error) {
  	handler := &Handler{
  		logger:       logger.NopLogger,
  		closeTimeout: time.Second * 30,
  	}
  	handler.Handler = newRouter(handler)
  	handler.populateValidators()
  
  	for _, opt := range opts {
  		err := opt(handler)
  		if err != nil {
  			return nil, errors.Wrap(err, "applying option")
  		}
  	}
  
  	if handler.api == nil {
  		return nil, errors.New("must pass OptHandlerAPI")
  	}
  
  	if handler.ln == nil {
  		return nil, errors.New("must pass OptHandlerListener")
  	}
  
  	handler.server = &http.Server{Handler: handler}
  
  	return handler, nil
  }
docs: // NewHandler returns a new instance of Handler with a default logger.