add support for require