diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php
index 4cf664a09..e647f4b30 100644
--- a/airtime_mvc/application/controllers/LibraryController.php
+++ b/airtime_mvc/application/controllers/LibraryController.php
@@ -55,11 +55,10 @@ class LibraryController extends Zend_Controller_Action
         try {
 
             $obj_sess = new Zend_Session_Namespace(UI_PLAYLISTCONTROLLER_OBJ_SESSNAME);
-            //Application_Model_Library::changePlaylist(null, null);
             if (isset($obj_sess->id)) {
-                Logging::info($obj_sess->type);
-                $objInfo = Application_Model_Library::getObjInfo($this->obj_sess->type);
                 Logging::info($obj_sess->id);
+                Logging::info($obj_sess->type);
+                $objInfo = Application_Model_Library::getObjInfo($obj_sess->type);
                 $obj = new $objInfo['className']($obj_sess->id);
                 $userInfo = Zend_Auth::getInstance()->getStorage()->read();
                 $user = new Application_Model_User($userInfo->id);
@@ -82,6 +81,7 @@ class LibraryController extends Zend_Controller_Action
             $this->playlistNotFound($obj_sess->type);
         } catch (Exception $e) {
             $this->playlistNotFound($obj_sess->type);
+            Logging::info($e->getMessage());
             //$this->playlistUnknownError($e);
         }
     }
@@ -160,16 +160,17 @@ class LibraryController extends Zend_Controller_Action
 
         $isAdminOrPM = $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER));
 
+        $obj_sess = new Zend_Session_Namespace(UI_PLAYLISTCONTROLLER_OBJ_SESSNAME);
+
         if ($type === "audioclip") {
 
             $file = Application_Model_StoredFile::Recall($id);
 
-            $obj_sess = new Zend_Session_Namespace(UI_PLAYLISTCONTROLLER_OBJ_SESSNAME);
             if (isset($obj_sess->id) && $screen == "playlist") {
                 // if the user is not admin or pm, check the creator and see if this person owns the playlist or Block
                 if ($obj_sess->type == 'playlist') {
                     $obj = new Application_Model_Playlist($obj_sess->id);
-                } else {
+                } else if ($obj_sess->type == 'block') {
                     $obj = new Application_Model_Block($obj_sess->id);
                 }
                 if ($isAdminOrPM || $obj->getCreatorId() == $user->getId()) {
@@ -187,10 +188,10 @@ class LibraryController extends Zend_Controller_Action
 
             $url = $file->getRelativeFileUrl($baseUrl).'/download/true';
             $menu["download"] = array("name" => "Download", "icon" => "download", "url" => $url);
-        } elseif ($type === "playlist" || $type === "block") {
+        } else if ($type === "playlist" || $type === "block") {
             if ($type === 'playlist') {
                 $obj = new Application_Model_Playlist($id);
-            } else {
+            } else if ($type === 'block') {
                 $obj = new Application_Model_Block($id);
                 if (!$obj->isStatic()) {
                     unset($menu["play"]);
diff --git a/airtime_mvc/application/controllers/WebstreamController.php b/airtime_mvc/application/controllers/WebstreamController.php
index 10944aa7b..670fc859a 100644
--- a/airtime_mvc/application/controllers/WebstreamController.php
+++ b/airtime_mvc/application/controllers/WebstreamController.php
@@ -46,6 +46,8 @@ class WebstreamController extends Zend_Controller_Action
         $type = "stream";
         Application_Model_Library::changePlaylist($obj->getId(), $type);
         */
+        //clear the session in case an old playlist was open: CC-4196
+        Application_Model_Library::changePlaylist(null, null);
 
         $this->view->obj = new Application_Model_Webstream($webstream);
         $this->view->action = "new";
@@ -61,7 +63,11 @@ class WebstreamController extends Zend_Controller_Action
             throw new Exception("Missing parameter 'id'"); 
         }
 
+
         $webstream = CcWebstreamQuery::create()->findPK($id);
+        if ($webstream) {
+            Application_Model_Library::changePlaylist($id, "stream");
+        }
         $this->view->obj = new Application_Model_Webstream($webstream);
         $this->view->action = "edit";
         $this->view->html = $this->view->render('webstream/webstream.phtml');
diff --git a/airtime_mvc/application/models/Library.php b/airtime_mvc/application/models/Library.php
index 27e22400f..4245fa47f 100644
--- a/airtime_mvc/application/models/Library.php
+++ b/airtime_mvc/application/models/Library.php
@@ -13,6 +13,8 @@ class Application_Model_Library
             $info['className'] = 'Application_Model_Block';
         } else if (strcmp($p_type, 'stream')==0) {
             $info['className'] = 'Application_Model_Webstream';
+        } else {
+            throw new Exception("Unknown object type: '$p_type'");
         }
         
         return $info;
@@ -21,7 +23,6 @@ class Application_Model_Library
     public static function changePlaylist($p_id, $p_type)
     {
         $obj_sess = new Zend_Session_Namespace(UI_PLAYLISTCONTROLLER_OBJ_SESSNAME);
-        Logging::info($obj_sess);
 
         if (is_null($p_id) || is_null($p_type)) {
             unset($obj_sess->id);
diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php
index 642212fc5..9be0e51b0 100644
--- a/airtime_mvc/application/models/StoredFile.php
+++ b/airtime_mvc/application/models/StoredFile.php
@@ -853,58 +853,55 @@ class Application_Model_StoredFile
     {
         $audio_file = $p_targetDir . DIRECTORY_SEPARATOR . $tempname;
         Logging::info('copyFileToStor: moving file '.$audio_file);
-        $md5 = md5_file($audio_file);
-        $duplicate = Application_Model_StoredFile::RecallByMd5($md5, true);
 
-        $result = null;
-        if ($duplicate) {
-            if (file_exists($duplicate->getFilePath())) {
-                $duplicateName = $duplicate->getMetadataValue('MDATA_KEY_TITLE');
-                $result = array( "code" => 106, "message" => "An identical audioclip named '$duplicateName' already exists on the server.");
+        $storDir = Application_Model_MusicDir::getStorDir();
+        $stor    = $storDir->getDirectory();
+        // check if "organize" dir exists and if not create one
+        if (!file_exists($stor."/organize")) {
+            if (!mkdir($stor."/organize", 0777)) {
+                return array(
+                    "code"    => 109,
+                    "message" => "Failed to create 'organize' directory.");
             }
         }
 
-        if (!isset($result)) {//The file has no duplicate, so proceed to copy.
-            $storDir = Application_Model_MusicDir::getStorDir();
-            $stor = $storDir->getDirectory();
-            // check if "organize" dir exists and if not create one
-            if (!file_exists($stor."/organize")) {
-                if (!mkdir($stor."/organize", 0777)) {
-                    $result = array("code" => 109, "message" => "Failed to create 'organize' directory.");
-
-                    return $result;
-                }
-            }
-
-            if (chmod($audio_file, 0644) === false) {
-                Logging::info("Warning: couldn't change permissions of $audio_file to 0644");
-            }
-
-            //check to see if there is enough space in $stor to continue.
-            if (self::isEnoughDiskSpaceToCopy($stor, $audio_file)) {
-                $audio_stor = Application_Common_OsPath::join($stor, "organize", $fileName);
-
-                if (self::liquidsoapFilePlayabilityTest($audio_file)) {
-
-                    Logging::info("copyFileToStor: moving file $audio_file to $audio_stor");
-
-                    //Martin K.: changed to rename: Much less load + quicker since this is an atomic operation
-                    if (@rename($audio_file, $audio_stor) === false) {
-                        #something went wrong likely there wasn't enough space in the audio_stor to move the file too.
-                        #warn the user that the file wasn't uploaded and they should check if there is enough disk space.
-                        unlink($audio_file);//remove the file after failed rename
-                        $result = array("code" => 108, "message" => "The file was not uploaded, this error can occur if the computer hard drive does not have enough disk space or the stor directory does not have correct write permissions.");
-                    }
-                } else {
-                    $result = array("code" => 110, "message" => "This file appears to be corrupted and will not be added to media library.");
-                }
-
-            } else {
-                $result = array("code" => 107, "message" => "The file was not uploaded, there is ".$freeSpace."MB of disk space left and the file you are uploading has a size of  ".$fileSize."MB.");
-            }
+        if (chmod($audio_file, 0644) === false) {
+            Logging::info("Warning: couldn't change permissions of $audio_file to 0644");
         }
 
-        return $result;
+        // Check if we have enough space before copying
+        if(!self::isEnoughDiskSpaceToCopy($stor, $audio_file)) {
+            $freeSpace = disk_free_space($stor);
+            return array("code" => 107,
+                "message" => "The file was not uploaded, there is 
+                             ".$freeSpace."MB of disk space left and the file you are
+                             uploading has a size of  ".$fileSize."MB.");
+        }
+
+        // Check if liquidsoap can play this file
+        if(!self::liquidsoapFilePlayabilityTest($audio_file)) {
+            return array(
+                "code" => 110,
+                "message" => "This file appears to be corrupted and will not 
+                be added to media library.");
+        }
+
+        // Did all the checks for realz, now trying to copy
+        $audio_stor = Application_Common_OsPath::join($stor, "organize", $fileName);
+        Logging::info("copyFileToStor: moving file $audio_file to $audio_stor");
+        //Martin K.: changed to rename: Much less load + quicker since this is an atomic operation
+        if (@rename($audio_file, $audio_stor) === false) {
+            #something went wrong likely there wasn't enough space in the audio_stor to move the file too.
+            #warn the user that the file wasn't uploaded and they should check if there is enough disk space.
+            unlink($audio_file);//remove the file after failed rename
+            return array(
+                "code" => 108,
+                "message" => "
+                The file was not uploaded, this error can occur if the computer
+                hard drive does not have enough disk space or the stor
+                directory does not have correct write permissions.  ");
+        }
+        return null;
     }
 
     /*