diff --git a/gulp_tasks/server.js b/gulp_tasks/server.js
index b965786..49fc013 100644
--- a/gulp_tasks/server.js
+++ b/gulp_tasks/server.js
@@ -1,32 +1,28 @@
-var options = require('../gulp-options.js'),
-    gulp = require('gulp'),
+var options = require('../gulp-options.js'), gulp = require('gulp'),
     connect = require('gulp-connect'),
     distribution = require('./distribution.js');
 
 var runSequence = require('run-sequence');
 
-gulp.task('distribution', function (callback) {
-    return distribution(callback);
+gulp.task('distribution', function(callback) {
+  return distribution(callback);
 });
 
 gulp.task('connect', function() {
-  connect.server({
-    root: 'dist',
-    livereload: true
-  });
+  connect.server({root: 'dist', livereload: true});
 });
 
 gulp.task('livereload', function() {
-  gulp.src(['./dist/**/*.html','./dist/**/*.js','./dist/**/*.css'])
-    .pipe(connect.reload());
+  gulp.src(['./dist/**/*.html', './dist/**/*.js', './dist/**/*.css'])
+      .pipe(connect.reload());
 });
 
-gulp.task('watch', function () {
-  gulp.watch('./app/**/*', function(callback){
+gulp.task('watch', function() {
+  gulp.watch('./app/**/*', function(callback) {
     return runSequence('distribution', 'livereload');
   });
 });
 
-module.exports = function (callback) {
-    return runSequence('connect', 'watch', callback);
-};
\ No newline at end of file
+module.exports = function(callback) {
+  return runSequence('connect', 'watch', callback);
+};
