reorganize separate files and requires to make app.js even smaller