diff --git a/erpnext/home/page/my_company/my_company.py b/erpnext/home/page/my_company/my_company.py
index 3ff1482..c96d998 100644
--- a/erpnext/home/page/my_company/my_company.py
+++ b/erpnext/home/page/my_company/my_company.py
@@ -140,7 +140,9 @@
 	if 'new_password' in args:
 		if cint(webnotes.conn.get_value('Control Panel',None,'sync_with_gateway')):
 			import server_tools.gateway_utils
-			webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])['message'])
+			res = server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])
+			if 'Traceback' not in res['message']:
+				webnotes.msgprint(res['message'])
 		else:
 			webnotes.conn.sql("update tabProfile set password=password(%s) where name=%s", (args['new_password'], args['user']))
-	else: webnotes.msgprint('Settings Updated')
\ No newline at end of file
+	else: webnotes.msgprint('Settings Updated')
diff --git a/erpnext/setup/doctype/email_digest/email_digest.coffee b/erpnext/setup/doctype/email_digest/email_digest.coffee
deleted file mode 100644
index 1b17d5b..0000000
--- a/erpnext/setup/doctype/email_digest/email_digest.coffee
+++ /dev/null
@@ -1,101 +0,0 @@
-content_items = ['Sales','Expenses','Bank Balance','Activity']
-
-# make a grid with items and columns of checkboxes
-# Parameters:
-#   parent
-# 	label (main heading)
-#	items = [] (rows)
-#	columns = [] (columns of checks)
-#	widths
-#	description
-
-class CheckGrid
-	constructor: (@args) ->
-		$.extend @, args
-		@wrapper = $a @parent, 'div', 'check-grid round'
-		@render()
-		
-	render: ->
-		$a @wrapper, 'h3', 'check-grid-title', null, @label
-		
-		if @description
-			$a @wrapper, 'div', 'help-box', null, @description
-		
-		@tab = make_table @wrapper, @items.length + 1, @columns.length, '100%', @widths
-		@checks = {}
-
-		# render heads
-		for i in [0..@columns.length-1]
-			$($td(@tab, 0, i))
-				.addClass('check-grid-head gradient')
-				.html @columns[i]
-
-		@render_rows()
-	
-	render_rows: ->
-		# render rows
-		for i in [0..@items.length-1]
-			$td(@tab, i+1, 0).innerHTML = @items[i]
-			
-			# render checkboxes for this row
-			@checks[@items[i]] = {}
-			for c in [1..@columns.length-1]
-				check = $a_input $td(@tab, i+1, c), 'checkbox'
-				
-				# tag keys to checkbox
-				check.item = @items[i]
-				check.column = @columns[c]
-				
-				# add in my checks
-				@checks[@items[i]][@columns[c]] = check
-	
-	# get the values of the checkbox in a double dict
-	get: =>
-		val = {}
-		for item in keys @checks
-			for column in keys @checks[item]
-				check = @checks[item][column]
-				val[check.item] or= {}
-				val[check.item][check.column] = if check.checked then 1 else 0
-		val
-	
-	# set the values of the grid
-	set: (val) =>
-		for item in keys @checks
-			for column in keys @checks[item]
-				if val[item][column]
-					@checks[item][column] .checked = val[item][column] 
-		return
-
-# attach it to onload
-cx = cur_frm.cscript
-cx.onload = (doc, dt, dn) ->
-
-	# make the content grid
-	cx.content_grid = new CheckGrid 
-		parent: cur_frm.fields_dict.Body.wrapper
-		label: 'Email Settings'
-		items: content_items
-		columns: ['Item','Daily','Weekly']
-		widths: ['60%', '20%', '20%']
-		description: 'Select items to be compiled for Email Digest'
-
-	# make the email grid
-	cx.email_grid = new CheckGrid 
-		parent: cur_frm.fields_dict.Body.wrapper
-		label: 'Send To'
-		items: ['test1@erpnext', 'test2@erpnext']
-		columns: ['Email','Daily','Weekly']
-		widths: ['60%', '20%', '20%']
-		description: 'Select who gets daily and weekly mails'
-		
-	cx.content_grid.set JSON.parse doc.content_config if doc.content_config
-	cx.email_grid.set JSON.parse doc.email_config if doc.email_config
-	
-	return
-
-# update the data before sending
-cx.validate = (doc, dt, dn) ->
-	doc.content_config = JSON.stringify cx.content_grid.get()
-	doc.email_config = JSON.stringify cx.email_grid.get()
-		
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_digest/email_digest.css b/erpnext/setup/doctype/email_digest/email_digest.css
deleted file mode 100644
index f61dacc..0000000
--- a/erpnext/setup/doctype/email_digest/email_digest.css
+++ /dev/null
@@ -1,18 +0,0 @@
-
-div.check-grid {
-	margin: 17px;
-}
-
-div.check-grid table {
-	border-collapse: collapse;
-}
-
-div.check-grid table td {
-	padding: 3px;
-	border: 1px solid #aaa;
-}
-
-td.check-grid-head {
-	font-weight: bold;
-	text-align: center;
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_digest/email_digest.js b/erpnext/setup/doctype/email_digest/email_digest.js
deleted file mode 100644
index ddb13f4..0000000
--- a/erpnext/setup/doctype/email_digest/email_digest.js
+++ /dev/null
@@ -1,108 +0,0 @@
-(function() {
-  var CheckGrid, content_items, cx;
-  var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
-  content_items = ['Sales', 'Expenses', 'Bank Balance', 'Activity'];
-  CheckGrid = (function() {
-    function CheckGrid(args) {
-      this.args = args;
-      this.set = __bind(this.set, this);
-      this.get = __bind(this.get, this);
-      $.extend(this, args);
-      this.wrapper = $a(this.parent, 'div', 'check-grid round');
-      this.render();
-    }
-    CheckGrid.prototype.render = function() {
-      var i, _ref;
-      $a(this.wrapper, 'h3', 'check-grid-title', null, this.label);
-      if (this.description) {
-        $a(this.wrapper, 'div', 'help-box', null, this.description);
-      }
-      this.tab = make_table(this.wrapper, this.items.length + 1, this.columns.length, '100%', this.widths);
-      this.checks = {};
-      for (i = 0, _ref = this.columns.length - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
-        $($td(this.tab, 0, i)).addClass('check-grid-head gradient').html(this.columns[i]);
-      }
-      return this.render_rows();
-    };
-    CheckGrid.prototype.render_rows = function() {
-      var c, check, i, _ref, _results;
-      _results = [];
-      for (i = 0, _ref = this.items.length - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
-        $td(this.tab, i + 1, 0).innerHTML = this.items[i];
-        this.checks[this.items[i]] = {};
-        _results.push((function() {
-          var _ref2, _results2;
-          _results2 = [];
-          for (c = 1, _ref2 = this.columns.length - 1; 1 <= _ref2 ? c <= _ref2 : c >= _ref2; 1 <= _ref2 ? c++ : c--) {
-            check = $a_input($td(this.tab, i + 1, c), 'checkbox');
-            check.item = this.items[i];
-            check.column = this.columns[c];
-            _results2.push(this.checks[this.items[i]][this.columns[c]] = check);
-          }
-          return _results2;
-        }).call(this));
-      }
-      return _results;
-    };
-    CheckGrid.prototype.get = function() {
-      var check, column, item, val, _i, _j, _len, _len2, _name, _ref, _ref2;
-      val = {};
-      _ref = keys(this.checks);
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        item = _ref[_i];
-        _ref2 = keys(this.checks[item]);
-        for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-          column = _ref2[_j];
-          check = this.checks[item][column];
-          val[_name = check.item] || (val[_name] = {});
-          val[check.item][check.column] = check.checked ? 1 : 0;
-        }
-      }
-      return val;
-    };
-    CheckGrid.prototype.set = function(val) {
-      var column, item, _i, _j, _len, _len2, _ref, _ref2;
-      _ref = keys(this.checks);
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        item = _ref[_i];
-        _ref2 = keys(this.checks[item]);
-        for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-          column = _ref2[_j];
-          if (val[item][column]) {
-            this.checks[item][column].checked = val[item][column];
-          }
-        }
-      }
-    };
-    return CheckGrid;
-  })();
-  cx = cur_frm.cscript;
-  cx.onload = function(doc, dt, dn) {
-    cx.content_grid = new CheckGrid({
-      parent: cur_frm.fields_dict.Body.wrapper,
-      label: 'Email Settings',
-      items: content_items,
-      columns: ['Item', 'Daily', 'Weekly'],
-      widths: ['60%', '20%', '20%'],
-      description: 'Select items to be compiled for Email Digest'
-    });
-    cx.email_grid = new CheckGrid({
-      parent: cur_frm.fields_dict.Body.wrapper,
-      label: 'Send To',
-      items: ['test1@erpnext', 'test2@erpnext'],
-      columns: ['Email', 'Daily', 'Weekly'],
-      widths: ['60%', '20%', '20%'],
-      description: 'Select who gets daily and weekly mails'
-    });
-    if (doc.content_config) {
-      cx.content_grid.set(JSON.parse(doc.content_config));
-    }
-    if (doc.email_config) {
-      cx.email_grid.set(JSON.parse(doc.email_config));
-    }
-  };
-  cx.validate = function(doc, dt, dn) {
-    doc.content_config = JSON.stringify(cx.content_grid.get());
-    return doc.email_config = JSON.stringify(cx.email_grid.get());
-  };
-}).call(this);
