Added support for optional=True