use require.js to manage structure and dependencies