diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 3ba473e023d6f8b60d3f4f2b6940ec4663df5a2a..86c5185bf728b6752b2f924375531259bdc61a7e 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -451,7 +451,7 @@ $(document).ready(function() {
 		$(this).append(input);
 		input.focus();
 		input.change(function(){
-			var name=$(this).val();
+			var name=getUniqueName($(this).val());
 			if(type != 'web' && name.indexOf('/')!=-1){
 				$('#notification').text(t('files','Invalid name, \'/\' is not allowed.'));
 				$('#notification').fadeIn();
@@ -496,6 +496,7 @@ $(document).ready(function() {
 					}else{//or the domain
 						localName=(localName.match(/:\/\/(.[^/]+)/)[1]).replace('www.','');
 					}
+					localName = getUniqueName(localName);
 					$.post(
 						OC.filePath('files','ajax','newfile.php'),
 						{dir:$('#dir').val(),source:name,filename:localName},
@@ -737,7 +738,10 @@ getMimeIcon.cache={};
 function getUniqueName(name){
 	if($('tr').filterAttr('data-file',name).length>0){
 		var parts=name.split('.');
-		var extension=parts.pop();
+		var extension = "";
+		if (parts.length > 1) {
+			extension=parts.pop();
+		}
 		var base=parts.join('.');
 		numMatch=base.match(/\((\d+)\)/);
 		var num=2;
@@ -747,7 +751,10 @@ function getUniqueName(name){
 			base.pop();
 			base=base.join('(').trim();
 		}
-		name=base+' ('+num+').'+extension;
+		name=base+' ('+num+')';
+		if (extension) {
+			name = name+'.'+extension;
+		}
 		return getUniqueName(name);
 	}
 	return name;
diff --git a/lib/files.php b/lib/files.php
index 469c3a15b8eb9ea69f8befc6b53f711303d74d6c..cee273d95c93eaf15e1275138098d59925a6498a 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -167,10 +167,12 @@ class OC_Files {
 	* @param file $target
 	*/
 	public static function move($sourceDir,$source,$targetDir,$target){
-		if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared')){
+		if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared') && !OC_Filesystem::file_exists($tagetDir.'/'.$target)){
 			$targetFile=self::normalizePath($targetDir.'/'.$target);
 			$sourceFile=self::normalizePath($sourceDir.'/'.$source);
 			return OC_Filesystem::rename($sourceFile,$targetFile);
+		} else {
+			return false;
 		}
 	}