diff --git a/views/ngXosViews/sampleView/gulp/server.js b/views/ngXosViews/sampleView/gulp/server.js
index bc8e9c0..c0678d9 100644
--- a/views/ngXosViews/sampleView/gulp/server.js
+++ b/views/ngXosViews/sampleView/gulp/server.js
@@ -3,7 +3,6 @@
 var gulp = require('gulp');
 var browserSync = require('browser-sync').create();
 var inject = require('gulp-inject');
-var es = require('event-stream');
 var runSequence = require('run-sequence');
 var angularFilesort = require('gulp-angular-filesort');
 var babel = require('gulp-babel');
@@ -11,7 +10,6 @@
 var httpProxy = require('http-proxy');
 var del = require('del');
 var sass = require('gulp-sass');
-var debug = require('gulp-debug');
 
 const environment = process.env.NODE_ENV;
 
@@ -36,13 +34,9 @@
 });
 
 module.exports = function(options){
-  // open in browser with sync and proxy to 0.0.0.0
+
   gulp.task('browser', function() {
-    console.log(options.helpers);
     browserSync.init({
-      // reloadDelay: 500,
-      // logLevel: 'debug',
-      // logConnections: true,
       startPath: '#/',
       snippetOptions: {
         rule: {
@@ -52,12 +46,12 @@
       server: {
         baseDir: options.src,
         routes: {
-          // '/xosHelpers/src': options.helpers,
           '/xos/core/xoslib/static/js/vendor': options.helpers,
           '/xos/core/static': options.static + '../../static/'
         },
         middleware: function(req, res, next){
           if(
+            // to be removed, deprecated API
             // req.url.indexOf('/xos/') !== -1 ||
             // req.url.indexOf('/xoslib/') !== -1 ||
             // req.url.indexOf('/hpcapi/') !== -1 ||
@@ -86,6 +80,9 @@
     gulp.watch(options.css + '**/*.css', function(){
       browserSync.reload();
     });
+    gulp.watch(`${options.sass}/**/*.scss`, ['sass'], function(){
+      browserSync.reload();
+    });
 
     gulp.watch([
       options.helpers + 'ngXosHelpers.js',
@@ -93,10 +90,6 @@
     ], function(){
       browserSync.reload();
     });
-    
-    gulp.watch(`${options.sass}/**/*.scss`, ['sass'], function(){
-      browserSync.reload();
-    });
   });
 
   // compile sass
@@ -113,40 +106,16 @@
       .pipe(gulp.dest(options.tmp));
   });
 
-  // // inject sourceMap
-  // gulp.task('injectMaps', function(){
-  //   return gulp.src(options.src + 'index.html')
-  //     .pipe(
-  //       inject(
-  //         gulp.src([
-  //           options.helpersSourceMaps + '**/*.js.map'
-  //         ], {read: false}).pipe(debug()),
-  //         {
-  //           starttag: '<!-- inject:maps -->',
-  //           // ignorePath: [options.src, '/../../ngXosLib']
-  //         }
-  //       )
-  //     )
-  //     .pipe(gulp.dest(options.src));
-  // });
-
   // inject scripts
   gulp.task('injectScript', ['cleanTmp', 'babel'], function(){
-
-    var appScripts = gulp.src([
-      options.tmp + '**/*.js',
-      options.helpers + 'ngXosHelpers.js'
-    ])
-    .pipe(angularFilesort()).pipe(debug());
-
-    var helpersSourceMaps = gulp.src([
-      options.helpersSourceMaps + '**/*.js.map'
-    ]).pipe(debug());
-
     return gulp.src(options.src + 'index.html')
       .pipe(
         inject(
-          es.merge(appScripts, helpersSourceMaps),
+          gulp.src([
+            options.tmp + '**/*.js',
+            options.helpers + 'ngXosHelpers.js'
+          ])
+          .pipe(angularFilesort()),
           {
             ignorePath: [options.src, '/../../ngXosLib']
           }
