diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb
index 2996a23ecd8e145f3c5b9b6d288cbb2f14809ff4..46332992d87b35ef8206355c7c4b58344d88aa10 100644
--- a/app/controllers/photos_controller.rb
+++ b/app/controllers/photos_controller.rb
@@ -2,6 +2,7 @@ class PhotosController < ApplicationController
   before_filter :authenticate_user!
   
   def create
+    render :nothing => true
     begin
       @photo = current_user.post(:photo, params)
 
@@ -21,6 +22,8 @@ class PhotosController < ApplicationController
   
   def new
     @photo = Photo.new
+    @album = current_user.album_by_id(params[:album_id])
+    render :partial => "new_photo"
   end
   
   def destroy
diff --git a/app/models/user.rb b/app/models/user.rb
index c26e02f1ceb5bf7fb2bf1fc86032efe57508f486..38dde280ae0a2b2e5c2e36045e0b23e78e616dfb 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -46,6 +46,7 @@ class User
     options.delete(:group_id)
 
     model_class = class_name.to_s.camelize.constantize
+    
     post = model_class.instantiate(options)
     post.creator_signature = post.sign_with_key(encryption_key)
     post.save
@@ -324,6 +325,11 @@ class User
     groups.detect{|x| x.id == id }
   end
 
+  def album_by_id( id )
+    id = ensure_bson id
+    albums.detect{|x| x.id == id }
+  end
+
   def groups_with_person person
     id = ensure_bson person.id
     groups.select {|group| group.person_ids.include? id}
diff --git a/app/views/albums/show.html.haml b/app/views/albums/show.html.haml
index 04b1176456f9c1a802e26e80c2f3789ed5966ecf..c0cf974272e167158b0a882c4db19f337f61824c 100644
--- a/app/views/albums/show.html.haml
+++ b/app/views/albums/show.html.haml
@@ -1,3 +1,9 @@
+:javascript
+  $(document).ready(function(){
+    reset_photo_fancybox();
+  });
+
+.album_id{:id => @album.id, :style => "display:hidden;"}
 .back= link_to '⇧ albums', albums_path
 %h1.big_text
 
@@ -11,7 +17,6 @@
 
   .yo{:style => "display:none;"}
     #new_photo_pane
-      = render "photos/new_photo", :photo => @photo, :album => @album
 
 .sub_header
   ="updated #{how_long_ago(@album)}"
diff --git a/app/views/js/_websocket_js.haml b/app/views/js/_websocket_js.haml
index 443726e509f23b0db347ad6df3367ff8113bdb15..282a07624550fa8fe28d04a2b0df1b774c278e4e 100644
--- a/app/views/js/_websocket_js.haml
+++ b/app/views/js/_websocket_js.haml
@@ -1,103 +1,101 @@
--  if user_signed_in?
-  = javascript_include_tag 'FABridge', 'swfobject', 'web_socket'
-  :javascript
-      WebSocket.__swfLocation = "/javascripts/WebSocketMain.swf";
-  :javascript
-    $(document).ready(function(){
-      function debug(str){ $("#debug").append("<p>" +  str); };
+= javascript_include_tag 'FABridge', 'swfobject', 'web_socket'
+:javascript
+  WebSocket.__swfLocation = "/javascripts/WebSocketMain.swf";
+  $(document).ready(function(){
+    function debug(str){ $("#debug").append("<p>" +  str); };
 
-      ws = new WebSocket("ws://#{request.host}:8080/#{CGI::escape(current_user.id.to_s)}");
+    ws = new WebSocket("ws://#{request.host}:8080/#{CGI::escape(current_user.id.to_s)}");
 
-    //Attach onmessage to websocket
-      ws.onmessage = function(evt) {
-        var obj = jQuery.parseJSON(evt.data);
-        debug("got a " + obj['class'] + " for group " + obj['group_id']);
+  //Attach onmessage to websocket
+    ws.onmessage = function(evt) {
+      var obj = jQuery.parseJSON(evt.data);
+      debug("got a " + obj['class'] + " for group " + obj['group_id']);
 
-        if (obj['class']=="retractions"){
-          processRetraction(obj['post_id']);
-        
-        }else if (obj['class']=="comments"){
-          processComment(obj['post_id'], obj['html']) 
-        
-        }else if (obj['class']=='photos' && onPageForClass('albums')){
-          processPhotoInAlbum(obj['photo_hash'])
-        }else if (obj['class']=='status_messages'){
-          processStatusMessage(obj['class'], obj['html'], obj['status_message_hash'], obj['group_id'], obj['mine?'])
-        }else{
-          processPost(obj['class'], obj['html'], obj['group_id'], obj['mine?'])
-        }
+      if (obj['class']=="retractions"){
+        processRetraction(obj['post_id']);
+      
+      }else if (obj['class']=="comments"){
+        processComment(obj['post_id'], obj['html']) 
+      
+      }else if (obj['class']=='photos' && onPageForClass('albums')){
+        processPhotoInAlbum(obj['photo_hash'])
+      }else if (obj['class']=='status_messages'){
+        processStatusMessage(obj['class'], obj['html'], obj['status_message_hash'], obj['group_id'], obj['mine?'])
+      }else{
+        processPost(obj['class'], obj['html'], obj['group_id'], obj['mine?'])
+      }
 
-        
-      }; 
-      ws.onclose = function() { debug("socket closed"); };
-      ws.onopen = function() {
-        ws.send(location.pathname);
-        debug("connected...");
-      };
+      
+    }; 
+    ws.onclose = function() { debug("socket closed"); };
+    ws.onopen = function() {
+      ws.send(location.pathname);
+      debug("connected...");
+    };
 
-      function processRetraction(post_id){
-        $('#' + post_id ).fadeOut(500, function(){
-          $(this).remove;
-        });
-      }
+    function processRetraction(post_id){
+      $('#' + post_id ).fadeOut(500, function(){
+        $(this).remove;
+      });
+    }
 
-      function processComment(post_id, html){
-        post = $('#' + post_id)[0]
-        $(' .comment_set li:last', post ).before(
-          $(html).fadeIn("fast", function(){})
-        );
-        toggler = $('.show_post_comments', post)
-        toggler.html(
-          toggler.html().replace(/\d/,$('.comment_set', post)[0].childElementCount -1));
-      }
+    function processComment(post_id, html){
+      post = $('#' + post_id)[0]
+      $(' .comment_set li:last', post ).before(
+        $(html).fadeIn("fast", function(){})
+      );
+      toggler = $('.show_post_comments', post)
+      toggler.html(
+        toggler.html().replace(/\d/,$('.comment_set', post)[0].childElementCount -1));
+    }
 
-      function processPost(className, html, groupId, mineBool){
-        if(mineBool || onPageForClass(className) || onPageForGroup(groupId)){
-          $("#stream").prepend(
-            $(html).fadeIn("fast", function(){
-              $("#stream label:first").inFieldLabels();
-            })
-          ); 
-        }
+    function processPost(className, html, groupId, mineBool){
+      if(mineBool || onPageForClass(className) || onPageForGroup(groupId)){
+        $("#stream").prepend(
+          $(html).fadeIn("fast", function(){
+            $("#stream label:first").inFieldLabels();
+          })
+        ); 
       }
+    }
 
-      function processStatusMessage(className, html, messageHash, groupId, mineBool){
-        processPost(className, html, groupId, mineBool);
-        console.log(messageHash)
-        if(messageHash['mine?']){
-          updateMyLatestStatus(messageHash);
-        }
-      }
-      
-      function updateMyLatestStatus(messageHash){
-        $("#latest_message").text(messageHash['text']);
-        $("#latest_message_time").text(' - just now');
+    function processStatusMessage(className, html, messageHash, groupId, mineBool){
+      processPost(className, html, groupId, mineBool);
+      console.log(messageHash)
+      if(messageHash['mine?']){
+        updateMyLatestStatus(messageHash);
       }
+    }
+    
+    function updateMyLatestStatus(messageHash){
+      $("#latest_message").text(messageHash['text']);
+      $("#latest_message_time").text(' - just now');
+    }
 
-      function processPhotoInAlbum(photoHash){
-        if (location.href.indexOf(photoHash['album_id']) == -1){
-          return ;
-        }
-        html =  "<div class=\'image_thumb\' id=\'"+photoHash['id']+"\' style=\'padding-right:3px;\'> \
-          <a href=\"/photos/"+ photoHash['id'] +"\"> \
-          <img alt=\"New thumbnail\" src=\""+ photoHash['thumb_url'] +"\" /> \
-          </a> </div>"  
-        $("#thumbnails").append( $(html) )
-        $("#"+ photoHash['id'] + "  img").load( function() {
-          $(this).fadeIn("slow");
-        });
-      }
-      
-      function onPageForClass(className){
-        return ((location.href.indexOf(className) != -1 ) || (location.pathname == '/')) && onPageOne();
+    function processPhotoInAlbum(photoHash){
+      if (location.href.indexOf(photoHash['album_id']) == -1){
+        return ;
       }
+      html =  "<div class=\'image_thumb\' id=\'"+photoHash['id']+"\' style=\'padding-right:3px;\'> \
+        <a href=\"/photos/"+ photoHash['id'] +"\"> \
+        <img alt=\"New thumbnail\" src=\""+ photoHash['thumb_url'] +"\" /> \
+        </a> </div>"  
+      $("#thumbnails").append( $(html) )
+      $("#"+ photoHash['id'] + "  img").load( function() {
+        $(this).fadeIn("slow");
+      });
+    }
+    
+    function onPageForClass(className){
+      return ((location.href.indexOf(className) != -1 ) || (location.pathname == '/')) && onPageOne();
+    }
 
-      function onPageForGroup(groupId){
-        return (location.href.indexOf(groupId) != -1 ) 
-      }
-      
-      function onPageOne() {
-          var c = document.location.search.charAt(document.location.search.length-1);
-          return ((c =='') || (c== '1'));
-      }
-    });
+    function onPageForGroup(groupId){
+      return (location.href.indexOf(groupId) != -1 ) 
+    }
+    
+    function onPageOne() {
+        var c = document.location.search.charAt(document.location.search.length-1);
+        return ((c =='') || (c== '1'));
+    }
+  });
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 30564f576b11649a5ef1f571160aa3b6aece691a..1e5da03cef7d4e80aadea49e1b407f53c1ec24ba 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -13,7 +13,6 @@
 
     /= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"
     = javascript_include_tag 'jquery142', 'rails', 'google'
-    = javascript_include_tag 'tiny_mce/tiny_mce'
     = javascript_include_tag 'jquery.infieldlabel', 'jquery.cycle/jquery.cycle.min.js'
     
     = javascript_include_tag 'fancybox/jquery.fancybox-1.3.1.pack'
diff --git a/app/views/photos/_new_photo.haml b/app/views/photos/_new_photo.haml
index b577315967f91457c485f21d5f9071c9c61618da..5bc6d68822def319a08755e7a7c68a8cb5fbf7cf 100644
--- a/app/views/photos/_new_photo.haml
+++ b/app/views/photos/_new_photo.haml
@@ -2,7 +2,7 @@
   $(function() {
     $("#photo_image").html5_upload({
       // WE INSERT ALBUM_ID PARAM HERE
-      url: "/photos?album_id=#{album.id}",   
+      url: "/photos?album_id=#{@album.id}",   
       sendBoundary: window.FormData || $.browser.mozilla,
       setName: function(text) {
         $("#progress_report_name").text(text);
@@ -12,8 +12,10 @@
         $("#add_photo_loader").fadeOut(400);
 
         $("#photo_title_status").text("Done!");
-        $("#progress_report").html("Great job!");
-      },
+        $("#progress_report").html("Good job me!");
+
+        $("#add_photo_button").addClass("uploading_complete");
+       },
       onStart: function(event, total){
         $("#add_photo_button").html( "Uploading Photos" );
         $("#add_photo_loader").fadeIn(400);
@@ -29,10 +31,10 @@
 %h1
   %span{:id=>"photo_title_status"}
     Add photos to
-    %i= album.name
-= form_for photo, :html => {:multipart => true} do |f|
+    %i= @album.name
+= form_for @photo, :html => {:multipart => true} do |f|
   = f.error_messages
-  = f.hidden_field :album_id, :value => album.id
+  = f.hidden_field :album_id, :value => @album.id
   = f.file_field :image, :multiple => 'multiple'
 
 #progress_report{ :style => "display:none;text-align:center;" }
diff --git a/config/app_config.yml b/config/app_config.yml
index 0c87b6b4c6ac5a22b3c90c3ed3b0190d7086f366..1eee9376c65cf969bb0cafd75784f3d26662aea3 100644
--- a/config/app_config.yml
+++ b/config/app_config.yml
@@ -1,14 +1,17 @@
 development:
   debug: false
+  socket_debug : false
   socket_port: 8080
   pubsub_server: 'https://pubsubhubbub.appspot.com/'
 
 test:
   debug: false
+  socket_debug : false
   socket_port: 8081
   pubsub_server: 'https://pubsubhubbub.appspot.com/'
 
 production:
   debug: false
+  socket_debug : false
   socket_port: 8080
   pubsub_server: 'https://pubsubhubbub.appspot.com/'
diff --git a/config/initializers/socket.rb b/config/initializers/socket.rb
index 381d1f6c281d29c5f803f25a822844e7be137d72..03f9e24eb441b7cfaec39d57e05b8bce948028a5 100644
--- a/config/initializers/socket.rb
+++ b/config/initializers/socket.rb
@@ -7,7 +7,7 @@ require "lib/diaspora/websocket"
     EventMachine::WebSocket.start(
                   :host => "0.0.0.0", 
                   :port => APP_CONFIG[:socket_port],
-                  :debug =>APP_CONFIG[:debug]) do |ws|
+                  :debug =>APP_CONFIG[:socket_debug]) do |ws|
       ws.onopen {
         
         sid = Diaspora::WebSocket.subscribe(ws.request['Path'].gsub('/',''), ws)
diff --git a/config/routes.rb b/config/routes.rb
index 946d34729ea5c14faab0c26665977c17f3a69588..80aa3d872cb4736022b2dc08b5df89213299cf44 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -4,7 +4,7 @@ Diaspora::Application.routes.draw do
   resources :status_messages
   resources :comments
   resources :requests
-  resources :photos
+  resources :photos, :except => [:index]
   resources :albums
   resources :groups
 
diff --git a/public/javascripts/view.js b/public/javascripts/view.js
index d3e480b59389b4a644cd3400f8886df5c4ebe017..6022cf1a8738b5d446f0d500de443b8fcfa387f4 100644
--- a/public/javascripts/view.js
+++ b/public/javascripts/view.js
@@ -1,19 +1,4 @@
 $(document).ready(function(){
-	tinyMCE.init({
-			mode : "exact",
-			elements: "blog_editor",
-			theme : "advanced",
-			plugins : "emotions,spellchecker,advhr,insertdatetime,preview",	
-
-			// Theme options - button# indicated the row# only
-		theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,fontsizeselect,formatselect",
-		theme_advanced_buttons2 : "cut,copy,paste|,bullist,numlist,|,outdent,indent|,undo,redo,|,link,unlink,anchor,image,|,preview,|,forecolor,backcolor",
-		theme_advanced_buttons3 : "insertdate,inserttime,|,spellchecker,|,sub,sup,|,charmap,emotions",	
-		theme_advanced_toolbar_location : "top",
-		theme_advanced_toolbar_align : "left",
-		//theme_advanced_resizing : true //leave this out as there is an intermittent bug.
-	});
-
 	
 	$('.comment_set').each(function(index) {
 	    if($(this).children().length > 1) {
@@ -86,7 +71,14 @@ $(document).ready(function(){
   $("#add_album_button").fancybox();
   $("#add_group_button").fancybox();
   $("#add_request_button").fancybox({ 'titleShow': false });
-  $("#add_photo_button").fancybox();
+  $("#add_photo_button").fancybox({
+    'onClosed'   :   function(){
+      if($("#add_photo_button").hasClass("uploading_complete")){
+        $("#add_photo_button").removeClass("uploading_complete");
+        reset_photo_fancybox();
+      }
+    }
+  });
 
   //pane_toggler_button("photo");
 
@@ -106,6 +98,12 @@ $(document).ready(function(){
 
 });//end document ready
 
+function reset_photo_fancybox(){
+        album_id = $(".album_id")[0].id;
+        ajax = $.get("/photos/new?album_id=" + album_id, function(){
+          $("#new_photo_pane").html(ajax.responseText)
+        });
+}
 
 function pane_toggler_button( name ) {