Updated with grunt framework, restructuring, etc.