support theme, optimized speed, use grunt instead of node-browserify