diff --git a/app/controllers/likes_controller.rb b/app/controllers/likes_controller.rb
index e0071c9375054b05763857d6b6cae43e48d60ff5..f0ad406d989bc5f2974c435f45512c006b27e267 100644
--- a/app/controllers/likes_controller.rb
+++ b/app/controllers/likes_controller.rb
@@ -9,19 +9,18 @@ class LikesController < ApplicationController
   respond_to :html, :mobile, :json
 
   def create
-    positive = (params[:positive] == 'true') ? true : false
     if target
-      @like = current_user.build_like(:positive => positive, :target => target)
+      @like = current_user.build_like(:target => target)
 
       if @like.save
-        Rails.logger.info("event=create type=like user=#{current_user.diaspora_handle} status=success like=#{@like.id} positive=#{positive}")
+        Rails.logger.info("event=create type=like user=#{current_user.diaspora_handle} status=success like=#{@like.id}")
         Postzord::Dispatcher.build(current_user, @like).post
 
         respond_to do |format|
           format.js { render 'likes/update', :status => 201 }
           format.html { render :nothing => true, :status => 201 }
           format.mobile { redirect_to post_path(@like.post_id) }
-          format.json { render :json => {"id" => @like.id}, :status => 201 }
+          format.json{ render :json => @like.as_api_response(:backbone), :status => 201 }
         end
       else
         render :nothing => true, :status => 422
@@ -52,7 +51,11 @@ class LikesController < ApplicationController
     if target
       @likes = target.likes.includes(:author => :profile)
       @people = @likes.map{|x| x.author}
-      render :layout => false
+
+      respond_to do |format|
+        format.all{ render :layout => false }
+        format.json{ render :json => @likes.as_api_response(:backbone) }
+      end
     else
       render :nothing => true, :status => 404
     end
diff --git a/app/models/comment.rb b/app/models/comment.rb
index 24b95941f9f60b84491a5a4a4198a20cb13fd5eb..7ec5b236e7c6449f2d4418e2ef9933bdca31bf43 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -26,7 +26,6 @@ class Comment < ActiveRecord::Base
     t.add :created_at
   end
 
-
   xml_attr :text
   xml_attr :diaspora_handle
 
diff --git a/app/models/like.rb b/app/models/like.rb
index 01a8b7d5b0f327b78aa4bcc5775c83557f45cefa..5466bddd1adc1e9559afc5c5836f61e4507d117b 100644
--- a/app/models/like.rb
+++ b/app/models/like.rb
@@ -11,6 +11,15 @@ class Like < ActiveRecord::Base
   xml_attr :target_type
   include Diaspora::Relayable
 
+  # NOTE API V1 to be extracted
+  acts_as_api
+  api_accessible :backbone do |t|
+    t.add :id
+    t.add :guid
+    t.add :author
+    t.add :created_at
+  end
+
   xml_attr :positive
   xml_attr :diaspora_handle
 
diff --git a/app/views/templates/stream_element.ujs b/app/views/templates/stream_element.ujs
index 64c167ce86fb50791c13f47be0e4f1fc79530271..3100d1b75761847df30ab6f3f228274d51cd1798 100644
--- a/app/views/templates/stream_element.ujs
+++ b/app/views/templates/stream_element.ujs
@@ -67,11 +67,11 @@
         </span>
 
         <% if(user_like) { %>
-          <a href="/posts/<%= id %>/likes/<%= user_like.id %>" class="like_action unlike" rel='nofollow'>
+          <a href="#" class="like_action unlike" data-id="<%= user_like.id %>" rel='nofollow'>
             Unlike
           </a>
         <% } else { %>
-          <a href="/posts/<%= id %>/likes?positive=true" class="like_action like" rel='nofollow'>
+          <a href="#" class="like_action like" rel='nofollow'>
             Like
           </a>
         <% } %>
diff --git a/public/javascripts/app/models/like.js b/public/javascripts/app/models/like.js
index efd9a3540955312e7d147430eec857d69847e179..3bed073f02b10b7fa71022efcc4534e9198acc37 100644
--- a/public/javascripts/app/models/like.js
+++ b/public/javascripts/app/models/like.js
@@ -1,10 +1,2 @@
 App.Models.Like = Backbone.Model.extend({
-  url: function(){
-    if(this.get("id")) {
-      return "/" + this.get("target_type") + "s/" + this.get("target_id") + "/likes/" + this.get("id");
-    }
-    else {
-      return "/posts/" + this.get("target_id") + "/likes";
-    }
-  }
 })
diff --git a/public/javascripts/app/models/post.js b/public/javascripts/app/models/post.js
index ecedef08cee7641b9eb8419b9e87e98cdc678284..528fabbd1404f725b2542516aa4a899284f0b20c 100644
--- a/public/javascripts/app/models/post.js
+++ b/public/javascripts/app/models/post.js
@@ -1,11 +1,13 @@
 App.Models.Post = Backbone.Model.extend({
   url: function(){
-    return "/posts/" + this.get("id");
+    return "/posts/" + this.id;
   },
 
   initialize: function() {
     this.comments = new App.Collections.Comments(this.get("last_three_comments"));
-    this.likes = new App.Collections.Likes();
+
+    this.likes = new App.Collections.Likes(this.get("user_like")); // load in the user like initially
+    this.likes.url = '/posts/' + this.id + '/likes';
   },
 
   createdAt: function(){
diff --git a/public/javascripts/app/views/post_view.js b/public/javascripts/app/views/post_view.js
index 3b36012714ed9a8c4766455ee9756a1ab313c673..0725a1a009a6d2c13385730526eff4a35a60e23d 100644
--- a/public/javascripts/app/views/post_view.js
+++ b/public/javascripts/app/views/post_view.js
@@ -67,21 +67,10 @@ App.Views.Post = App.Views.StreamObject.extend({
 
     var link = $(evt.target);
 
-    if(link.hasClass('like')){
-      this.model.likes.create({
-        target_id: this.model.get("id"),
-        target_type: "post",
-        positive: "true"
-      });
-    }
-    else {
-      var like = new App.Models.Like({
-        "id": this.model.get("user_like")["posts"]["id"],
-        target_type: "post",
-        target_id: this.model.get("id")
-      });
-
-      like.destroy();
+    if(link.hasClass('like')) {
+      this.model.likes.create();
+    } else {
+      this.model.likes.get(link.data("id")).destroy();
     }
 
     return this;