refactored for Grunt
slightly broken, highly refactored
nearly works (photos missing)