diff --git a/lib/public/share.php b/lib/public/share.php
index 34da8e89a4dea44caf26d22532d205f16706fc01..c420943da26b55fd86eaa56a693ebd9c8f672c2d 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -253,31 +253,20 @@ class Share {
 	}
 
 	/**
-	* @brief
-	* @param
-	* @param
-	* @return
+	* @brief Unshare an item shared with the current user
+	* @param string Item type
+	* @param string Item target
+	* @return Returns true on success or false on failure
+	*
+	* Unsharing from self is not allowed for items inside collections
+	*
 	*/
 	public static function unshareFromSelf($itemType, $itemTarget) {
-		$uidSharedWith = \OC_User::getUser();
-		if ($item = self::getItems($itemType, $itemTarget, $uidSharedWith, true, null, false, 1)) {
-			// Check if item is inside a shared folder and was converted
-			if ($item['parent']) {
-				$query = \OC_DB::prepare('SELECT item_type FROM *PREFIX*share WHERE id = ? LIMIT 1');
-				$result = $query->execute(array($item['parent']))->fetchRow();
-				if (isset($result['item_type']) && $result['item_type'] == 'folder') {
-					return false;
-				}
-			}
-			// Check if this is a group share, if it is a group share a new entry needs to be created marked as unshared from self
-			if ($item['uid_shared_with'] == null) {
-				$query = \OC_DB::prepare('INSERT INTO *PREFIX*share VALUES(?,?,?,?,?,?,?,?,?,?)');
-				$result = $query->execute(array($item['item_type'], $item['item_source'], $item['item_target'], $uidSharedWith, $item['gid_shared_with'], $item['uid_owner'], self::UNSHARED_FROM_SELF, $item['stime'], $item['file_source'], $item['file_target']));
-				if (\OC_DB::isError($result)) {
-// 					\OC_Log::write('OCP\Share', 'Share type '.$shareType.' is not valid for item '.$item, \OC_Log::ERROR);
-					return false;
-				}
+		if ($item = self::getItemSharedWith($itemType, $itemTarget)) {
+			if ((int)$item['share_type'] === self::SHARE_TYPE_GROUP) {
+				// TODO
 			}
+			// Delete 
 			return self::delete($item['id'], true);
 		}
 		return false;
@@ -301,7 +290,7 @@ class Share {
 				if (~(int)$result['permissions'] & $permissions) {
 					$message = 'Setting permissions for '.$itemSource.' failed, because the permissions exceed permissions granted to '.\OC_User::getUser();
 					\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
-					throw new Exception($message);
+					throw new \Exception($message);
 				}
 			}
 			$query = \OC_DB::prepare('UPDATE *PREFIX*share SET permissions = ? WHERE id = ?');
@@ -341,7 +330,7 @@ class Share {
 		}
 		$message = 'Setting permissions for '.$itemSource.' failed, because the item was not found';
 		\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
-		throw new Exception($message);
+		throw new \Exception($message);
 	}
 
 	/**
@@ -669,7 +658,7 @@ class Share {
 			if (isset($fileSource)) {
 				if ($parentFolder) {
 					if ($parentFolder === true) {
-						$groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith);
+						$groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group']);
 						// Set group default file target for future use
 						$parentFolders[0]['folder'] = $groupFileTarget;
 					} else {
@@ -681,12 +670,12 @@ class Share {
 						$uidSharedWith = array_keys($parentFolder);
 					}
 				} else {
-					$groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith);
+					$groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group']);
 				}
 			} else {
 				$groupFileTarget = null;
 			}
-			$groupItemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith);
+			$groupItemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith['group']);
 			$query->execute(array($itemType, $itemSource, $groupItemTarget, $parent, $shareType, $shareWith['group'], $uidOwner, $permissions, time(), $fileSource, $groupFileTarget));
 			// Save this id, any extra rows for this group share will need to reference it
 			$parent = \OC_DB::insertid('*PREFIX*share');