diff --git a/public/src/utils.js b/public/src/utils.js
index 622b8281a9..16a5bdbef7 100644
--- a/public/src/utils.js
+++ b/public/src/utils.js
@@ -2,9 +2,13 @@
 
 (function (factory) {
 	if (typeof module === 'object' && module.exports) {
+		var winston = require('winston');
+
 		var file = require('../../src/file');
 		module.exports = factory(require('xregexp'));
 		module.exports.walk = function (dir, done) {
+			// DEPRECATED
+			winston.warn('[deprecated] `utils.walk` is deprecated. Use `file.walk` instead.');
 			file.walk(dir, done);
 		};
 
@@ -424,11 +428,5 @@
 		};
 	}
 
-	if (typeof String.prototype.rtrim !== 'function') {
-		String.prototype.rtrim = function () {
-			return this.replace(/\s+$/g, '');
-		};
-	}
-
 	return utils;
 }));
diff --git a/src/topics/create.js b/src/topics/create.js
index 294b241d39..2c7f87741b 100644
--- a/src/topics/create.js
+++ b/src/topics/create.js
@@ -87,6 +87,10 @@ module.exports = function (Topics) {
 		], callback);
 	};
 
+	function rtrim(str) {
+		return str.replace(/\s+$/g, '');
+	}
+
 	Topics.post = function (data, callback) {
 		var uid = data.uid;
 		data.title = String(data.title).trim();
@@ -101,7 +105,7 @@ module.exports = function (Topics) {
 			},
 			function (next) {
 				if (data.content) {
-					data.content = data.content.rtrim();
+					data.content = rtrim(data.content);
 				}
 				check(data.content, meta.config.minimumPostLength, meta.config.maximumPostLength, 'content-too-short', 'content-too-long', next);
 			},
@@ -234,7 +238,7 @@ module.exports = function (Topics) {
 			function (filteredData, next) {
 				content = filteredData.content || data.content;
 				if (content) {
-					content = content.rtrim();
+					content = rtrim(content);
 				}
 
 				check(content, meta.config.minimumPostLength, meta.config.maximumPostLength, 'content-too-short', 'content-too-long', next);