use amdefine syntax for compatibility with requirejs