diff --git a/bcrypt.js b/bcrypt.js
index 1445999a8a..ae81d09eb7 100644
--- a/bcrypt.js
+++ b/bcrypt.js
@@ -9,11 +9,10 @@ process.on('message', function(msg) {
 	if (msg.type === 'hash') {
 		hashPassword(msg.password, msg.rounds);
 	} else if (msg.type === 'compare') {
-		compare(msg.password, msg.hash);
+		bcrypt.compare(msg.password, msg.hash, done);
 	}
 });
 
-
 function hashPassword(password, rounds) {
 	async.waterfall([
 		function(next) {
@@ -22,23 +21,14 @@ function hashPassword(password, rounds) {
 		function(salt, next) {
 			bcrypt.hash(password, salt, next);
 		}
-	], function(err, hash) {
-		if (err) {
-			process.send({err: err.message});
-			return process.disconnect();
-		}
-		process.send({result: hash});
-		process.disconnect();
-	});
+	], done);
 }
 
-function compare(password, hash) {
-	bcrypt.compare(password, hash, function(err, res) {
-		if (err) {
-			process.send({err: err.message});
-			return process.disconnect();
-		}
-		process.send({result: res});
-		process.disconnect();
- 	});
+function done(err, result) {
+	if (err) {
+		process.send({err: err.message});
+		return process.disconnect();
+	}
+	process.send({result: result});
+	process.disconnect();
 }
\ No newline at end of file
diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js
index 6178587423..75e341643e 100644
--- a/public/src/ajaxify.js
+++ b/public/src/ajaxify.js
@@ -64,12 +64,12 @@ $(document).ready(function() {
 	ajaxify.handleACPRedirect = function(url) {
 		// If ajaxifying into an admin route from regular site, do a cold load.
 		url = ajaxify.removeRelativePath(url.replace(/\/$/, ''));
-		if (url.indexOf('admin') === 0 && window.location.pathname.indexOf('/admin') !== 0) {
+		if (url.indexOf('admin') === 0 && window.location.pathname.indexOf(RELATIVE_PATH + '/admin') !== 0) {
 			window.open(RELATIVE_PATH + '/' + url, '_blank');
 			return true;
 		}
 		return false;
-	}
+	};
 
 	ajaxify.start = function(url, quiet, search) {
 		url = ajaxify.removeRelativePath(url.replace(/\/$/, ''));
diff --git a/src/emailer.js b/src/emailer.js
index b358e170fb..aeca1ecab8 100644
--- a/src/emailer.js
+++ b/src/emailer.js
@@ -62,7 +62,8 @@ var	fs = require('fs'),
 						plaintext: translated[1],
 						template: template,
 						uid: uid,
-						pid: params.pid
+						pid: params.pid,
+						fromUid: params.fromUid
 					});
 					callback();
 				} else {
diff --git a/src/routes/feeds.js b/src/routes/feeds.js
index 0f2f6082b6..58d44cbce5 100644
--- a/src/routes/feeds.js
+++ b/src/routes/feeds.js
@@ -84,8 +84,8 @@ function generateForTopic(req, res, next) {
 					feed.item({
 						title: 'Reply to ' + topicData.title + ' on ' + dateStamp,
 						description: postData.content,
-						url: nconf.get('url') + '/topic/' + topicData.slug + '#' + postData.pid,
-						author: postData.username,
+						url: nconf.get('url') + '/topic/' + topicData.slug + (postData.index ? '/' + (postData.index + 1) : ''),
+						author: postData.user ? postData.user.username : '',
 						date: dateStamp
 					});
 				}
@@ -144,8 +144,8 @@ function generateForCategory(req, res, next) {
 			if (err) {
 				return next(err);
 			}
-			sendFeed(feed, res);	
-		});		
+			sendFeed(feed, res);
+		});
 	});
 }
 
@@ -183,8 +183,8 @@ function generateForPopular(req, res, next) {
 				return next(err);
 			}
 			sendFeed(feed, res);
-		});	
-	});	
+		});
+	});
 }
 
 function disabledRSS(req, res, next) {
@@ -201,13 +201,13 @@ function generateForTopics(options, set, req, res, next) {
 		if (err) {
 			return next(err);
 		}
-		
+
 		generateTopicsFeed(options, data.topics, function(err, feed) {
 			if (err) {
 				return next(err);
 			}
-			sendFeed(feed, res);	
-		});	
+			sendFeed(feed, res);
+		});
 	});
 }
 
@@ -215,7 +215,7 @@ function generateTopicsFeed(feedOptions, feedTopics, callback) {
 	var tids = feedTopics.map(function(topic) {
 		return topic ? topic.tid : null;
 	});
-	
+
 	topics.getMainPids(tids, function(err, pids) {
 		if (err) {
 			return callback(err);
@@ -252,7 +252,7 @@ function generateTopicsFeed(feedOptions, feedTopics, callback) {
 			});
 			callback(null, feed);
 		});
-	});	
+	});
 }
 
 function generateForRecentPosts(req, res, next) {