optimized with grunt and working