modularized with requirejs