compatible with requirejs