<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/cms/behaviors.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/archiving.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/attaching.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/categorizing.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/connecting.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/hiding.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/publishing.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/soft_deleting.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/tagging.rb</filename>
    </added>
    <added>
      <filename>lib/cms/behaviors/versioning.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -35,10 +35,9 @@ class Cms::BlocksController &lt; Cms::BaseController
 
   def create
     @block = model_class.new(params[model_name])
-    @block.updated_by_user = current_user if @block.respond_to?(:updated_by_user)
     if @block.save!
       flash[:notice] = &quot;#{content_type.display_name} '#{@block.name}' was created&quot;
-      if @block.respond_to?(:connected_page) &amp;&amp; !@block.connected_page.blank?
+      if @block.connected_page
         redirect_to @block.connected_page.path
       else
         redirect_to_first params[:_redirect_to], cms_url(:blocks, content_type.name.underscore.pluralize)
@@ -56,7 +55,7 @@ class Cms::BlocksController &lt; Cms::BaseController
   end
 
   def revisions
-    if model_class.respond_to?(:versioned_class_name)
+    if model_class.versioned?
       load_block
     else
       render :text =&gt; &quot;Not Implemented&quot;, :status =&gt; :not_implemented
@@ -69,7 +68,6 @@ class Cms::BlocksController &lt; Cms::BaseController
   
   def update
     attrs = params[model_class.name.underscore]
-    attrs[:updated_by_user] = current_user if @block.respond_to?(:updated_by_user=)
     if @block.update_attributes(attrs)
       flash[:notice] = &quot;#{content_type_name.titleize} '#{@block.name}' was updated&quot;
       redirect_to_first params[:_redirect_to], cms_url(:blocks, @block.class.name.underscore, :show, @block)
@@ -87,18 +85,18 @@ class Cms::BlocksController &lt; Cms::BaseController
   end
 
   def publish
-    do_command(&quot;published&quot;) { @block.publish!(current_user) }
+    do_command(&quot;published&quot;) { @block.publish! }
     redirect_to cms_url(@block)
   end
 
   def archive
-    do_command(&quot;archived&quot;) { @block.archive(current_user) }
+    do_command(&quot;archived&quot;) { @block.archive }
     redirect_to cms_url(@block)
   end
 
   def revert_to
     begin
-      @block.revert_to(params[:version], current_user)
+      @block.revert_to(params[:version])
       flash[:notice] = &quot;Reverted '#{@block.name}' to version #{params[:version]}&quot;
     rescue Exception =&gt; e
       flash[:error] = &quot;Could not revert '#{@block.name}': #{e}&quot;</diff>
      <filename>app/controllers/cms/blocks_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,10 +10,10 @@ class Cms::ConnectorsController &lt; Cms::BaseController
   end
 
   def create
-    @block_type = ContentType.find_by_key(params[:content_block_type])
+    @block_type = ContentType.find_by_key(params[:connectable_type])
     raise &quot;Unknown block type&quot; unless @block_type
-    @block = @block_type.model_class.find(params[:content_block_id])
-    if @page.add_content_block!(@block, params[:container])
+    @block = @block_type.model_class.find(params[:connectable_id])
+    if @page.create_connector(@block, params[:container])
       redirect_to @page.path
     else
       @blocks = @block_type.model_class.all(:order =&gt; &quot;name&quot;)      
@@ -24,11 +24,11 @@ class Cms::ConnectorsController &lt; Cms::BaseController
   def destroy
     @connector = Connector.find(params[:id])
     @page = @connector.page
-    @content_block = @connector.content_block
-    if @page.destroy_connector(@connector)
-      flash[:notice] = &quot;Removed '#{@content_block.name}' from the '#{@connector.container}' container&quot;
+    @connectable = @connector.connectable
+    if @page.remove_connector(@connector)
+      flash[:notice] = &quot;Removed '#{@connectable.name}' from the '#{@connector.container}' container&quot;
     else
-      flash[:error] = &quot;Failed to remove '#{@content_block.name}' from the '#{@connector.container}' container&quot;
+      flash[:error] = &quot;Failed to remove '#{@connectable.name}' from the '#{@connector.container}' container&quot;
     end
     redirect_to @page.path
   end
@@ -42,11 +42,11 @@ class Cms::ConnectorsController &lt; Cms::BaseController
     define_method &quot;move_#{move}&quot; do
       @connector = Connector.find(params[:id])
       @page = @connector.page
-      @content_block = @connector.content_block
+      @connectable = @connector.connectable
       if @page.send(&quot;move_connector_#{move}&quot;, @connector)
-        flash[:notice] = &quot;Moved '#{@content_block.name}' #{where} the '#{@connector.container}' container&quot;
+        flash[:notice] = &quot;Moved '#{@connectable.name}' #{where} the '#{@connector.container}' container&quot;
       else
-        flash[:error] = &quot;Failed to move '#{@content_block.name}' #{where} the '#{@connector.container}' container&quot;
+        flash[:error] = &quot;Failed to move '#{@connectable.name}' #{where} the '#{@connector.container}' container&quot;
       end
       redirect_to @page.path    
     end</diff>
      <filename>app/controllers/cms/connectors_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -89,7 +89,6 @@ class Cms::ContentController &lt; Cms::ApplicationController
   # This method gives the content type a chance to set some params
   # This is used to make SEO-friendly URLs possible
   def prepare_params
-    logger.info &quot;\n\npreparing_params...&quot;
     if params[:prepare_with] &amp;&amp; params[:prepare_with][:content_type] &amp;&amp; params[:prepare_with][:method]
       content_type = params[:prepare_with][:content_type].constantize
       if content_type.respond_to?(params[:prepare_with][:method])</diff>
      <filename>app/controllers/cms/content_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 class Cms::DashboardController &lt; Cms::BaseController
       
   def index
-    @draft_pages = Page.draft.all(:order =&gt; &quot;updated_at desc&quot;)
+    @unpublished_pages = Page.unpublished.all(:order =&gt; &quot;updated_at desc&quot;)
   end
 end
\ No newline at end of file</diff>
      <filename>app/controllers/cms/dashboard_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,6 @@ class Cms::LinksController &lt; Cms::BaseController
   def create
     @link = Link.new(params[:link])
     @link.section = @section
-    @link.updated_by_user = current_user
     if @link.save
       flash[:notice] = &quot;Link was '#{@link.name}' created.&quot;
       redirect_to cms_url(@section)
@@ -24,7 +23,7 @@ class Cms::LinksController &lt; Cms::BaseController
   
   def update
     @link = Link.find(params[:id])
-    if @link.update_attributes(params[:link].merge(:updated_by_user =&gt; current_user))
+    if @link.update_attributes(params[:link])
       flash[:notice] = &quot;Link '#{@link.name}' was updated&quot;
       redirect_to cms_url(@link.section || :sitemap)
     else</diff>
      <filename>app/controllers/cms/links_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,7 +24,6 @@ class Cms::PagesController &lt; Cms::BaseController
   def create
     @page = Page.new(params[:page])
     @page.section = @section
-    @page.updated_by_user = current_user
     if @page.save
       flash[:notice] = &quot;Page was '#{@page.name}' created.&quot;
       redirect_to cms_url(@page)
@@ -35,7 +34,7 @@ class Cms::PagesController &lt; Cms::BaseController
 
   def update
     @page = Page.find(params[:id])
-    if @page.update_attributes(params[:page].merge(:updated_by_user =&gt; current_user))
+    if @page.update_attributes(params[:page])
       flash[:notice] = &quot;Page was '#{@page.name}' updated.&quot;
       redirect_to cms_url(@page)
     else
@@ -66,13 +65,13 @@ class Cms::PagesController &lt; Cms::BaseController
     define_method status do
       if params[:page_ids]
         params[:page_ids].each do |id|
-          Page.find(id).send(status, current_user)
+          Page.find(id).send(status)
         end
         flash[:notice] = &quot;#{params[:page_ids].size} pages #{verb}&quot;
         redirect_to cms_dashboard_url
       else
         load_page
-        if @page.send(status, current_user)
+        if @page.send(status)
           flash[:notice] = &quot;Page '#{@page.name}' was #{verb}&quot;
         end
         redirect_to @page.path
@@ -86,7 +85,7 @@ class Cms::PagesController &lt; Cms::BaseController
   end  
   
   def revert_to
-    if @page.revert_to(params[:version], current_user)
+    if @page.revert_to(params[:version])
       flash[:notice] = &quot;Page '#{@page.name}' was reverted to version #{params[:version]}&quot;
     end
     </diff>
      <filename>app/controllers/cms/pages_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,6 @@ class Cms::ResourceController &lt; Cms::BaseController
     @object = resource.find(params[:id])
     if @object.update_attributes(params[variable_name])
       flash[:notice] = &quot;#{resource_name.singularize.titleize} '#{object_name}' was updated&quot;
-      logger.debug &quot;Redirecting to #{after_update_url}&quot;
       redirect_to after_update_url
     else
       instance_variable_set(&quot;@#{variable_name}&quot;, @object)</diff>
      <filename>app/controllers/cms/resource_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -88,9 +88,9 @@ class Cms::SectionsController &lt; Cms::BaseController
       begin
         case params[:Type].downcase
         when &quot;file&quot;
-          FileBlock.create!(:section =&gt; @section, :file =&gt; params[:NewFile], :updated_by_user =&gt; current_user)
+          FileBlock.create!(:section =&gt; @section, :file =&gt; params[:NewFile])
         when &quot;image&quot; 
-          ImageBlock.create!(:section =&gt; @section, :file =&gt; params[:NewFile], :updated_by_user =&gt; current_user)
+          ImageBlock.create!(:section =&gt; @section, :file =&gt; params[:NewFile])
         end
         result = &quot;0&quot;
       rescue Exception =&gt; e</diff>
      <filename>app/controllers/cms/sections_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@ module Cms
     def page_versions(page)
       text = select_tag(:version, 
                         options_for_select(page.versions.all(:order =&gt; &quot;version desc&quot;).map { |r| 
-                          [&quot;v#{r.version}: #{r.revision_comment} by #{r.updated_by.login} at #{time_on_date(r.updated_at)}&quot;, r.version] 
+                          [&quot;v#{r.version}: #{r.version_comment} by #{r.updated_by.login} at #{time_on_date(r.updated_at)}&quot;, r.version] 
                         }, page.version), 
                         :onchange =&gt; 'this.form.submit(); return false')
       text &lt;&lt; javascript_tag(&quot;$('version').selectedIndex = 0&quot;) if page.current_version?
@@ -28,11 +28,11 @@ module Cms
       if logged_in? &amp;&amp; @mode == &quot;edit&quot;
         render :partial =&gt; 'cms/pages/edit_connector', :locals =&gt; {:connector =&gt; connector}
       else
-        render_content_block(connector.content_block)
+        render_connectable(connector.current_connectable)
       end
     end
   
-    def render_content_block(block)
+    def render_connectable(block)
       instance_eval &amp;block.renderer(block)
     rescue Exception =&gt; e
       logger.error &quot;Error occurred while rendering #{block.class}:#{block.id}: #{e.message}\n#{e.backtrace.join(&quot;\n&quot;)}&quot;</diff>
      <filename>app/helpers/cms/application_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,7 @@ module Cms
       if [String, Symbol, Hash, Array, Numeric, Date, Time].detect{|e| e === first}
         paths &lt;&lt; first.to_s.sub(/^\//,'')
       else
-        if first.class.respond_to?(:content_block?) &amp;&amp; first.class.content_block?
+        if first.class.connectable?
           paths &lt;&lt; 'blocks'
           paths &lt;&lt; first.content_block_type
         else</diff>
      <filename>app/helpers/cms/path_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -58,7 +58,6 @@ module Attachable
 
   def update_attachment_if_changed
     if attachment
-      attachment.updated_by = updated_by_user
       attachment.archived = archived
       attachment.published = !!(publish_on_save)
       attachment.save if new_record? || attachment.changed? || attachment.file</diff>
      <filename>app/models/attachable.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,9 +3,9 @@ class Attachment &lt; ActiveRecord::Base
   before_validation :process_file
   before_validation :prepend_slash
   before_save :update_file
-  
-  version_fu
-  is_paranoid
+
+  uses_soft_delete
+  is_versioned
   
   attr_accessor :file
 </diff>
      <filename>app/models/attachment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,30 +1,51 @@
 class Connector &lt; ActiveRecord::Base
   belongs_to :page
+  belongs_to :connectable, :polymorphic =&gt; true
   
-  #Can't use just 'block', because 'block_type' is used by rails
-  belongs_to :content_block, :polymorphic =&gt; true
-
   acts_as_list :scope =&gt; 'connectors.page_id = #{page_id} and connectors.page_version = #{page_version} and connectors.container = \'#{container}\''
   alias :move_up :move_higher 
-  alias :move_down :move_lower 
-  
-  validates_presence_of :container
-  
-  named_scope :for_block, lambda {|b| {:conditions =&gt; ['connectors.content_block_id = ? and connectors.content_block_type = ?', b.id, b.class.name]}}
-  named_scope :for_container, lambda{|container| {:conditions =&gt; ['connectors.container = ?', container]} }
-
-  #Returns the content block that this connector is connected to
-  def content_block
-    @__content_block__ ||= begin
-      if content_block_type.constantize.respond_to?(:versioned_class_name)
-        b = content_block_type.constantize.first(:conditions =&gt; {:id =&gt; content_block_id, :version =&gt; content_block_version})
-    
-        #If this connector is referring to an older version of the block, we have to look in the versions table
-        b ? b : content_block_type.constantize.find(content_block_id).as_of_version(content_block_version)
-      else
-        content_block_type.constantize.find(content_block_id)
-      end
-    end
+  alias :move_down :move_lower  
+  
+  named_scope :for_page_version, lambda{|pv| {:conditions =&gt; {:page_version =&gt; pv}}}
+  named_scope :for_connectable_version, lambda{|cv| {:conditions =&gt; {:connectable_version =&gt; cv}}}
+  named_scope :for_connectable, lambda{|c| 
+    {:conditions =&gt; { :connectable_id =&gt; c.id, :connectable_type =&gt; c.class.base_class.name }}
+  }  
+  named_scope :in_container, lambda{|container| {:conditions =&gt; {:container =&gt; container}}}
+  named_scope :at_position, lambda{|position| {:conditions =&gt; {:position =&gt; position}}}  
+  named_scope :like, lambda{|connector|
+    {:conditions =&gt; { 
+      :connectable_id =&gt; connector.connectable_id, 
+      :connectable_type =&gt; connector.connectable_type,
+      :connectable_version =&gt; connector.connectable_version,
+      :container =&gt; connector.container,
+      :position =&gt; connector.position
+    }}
+  }
+  
+  validates_presence_of :page_id, :page_version, :connectable_id, :connectable_type, :container
+  
+  def current_connectable
+    versioned? ? connectable.as_of_version(connectable_version) : connectable
+  end
+  
+  def status
+    published? ? :published : :draft
+  end        
+  def status_name
+    status.to_s.titleize
+  end  
+  
+  def published?
+    publishable? ? connectable.published? : true
+  end
+  
+  def publishable?
+    connectable_type.constantize.publishable?
+  end
+  
+  def versioned?
+    connectable_type.constantize.versioned?
   end
   
 end
\ No newline at end of file</diff>
      <filename>app/models/connector.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 class ImageBlock &lt; AbstractFileBlock
   include Attachable
-  acts_as_content_block
+  acts_as_content_block :versioned =&gt; { :version_foreign_key =&gt; :file_block_id }
 
   def self.display_name
     &quot;Image&quot;</diff>
      <filename>app/models/image_block.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class Link &lt; ActiveRecord::Base
-  acts_as_content_object
+  acts_as_content_block
   
   has_one :section_node, :as =&gt; :node
   </diff>
      <filename>app/models/link.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,37 +1,121 @@
 class Page &lt; ActiveRecord::Base
   
-  acts_as_content_page
+  is_archivable
+  is_hideable
+  is_publishable
+  uses_soft_delete
+  is_userstamped
+  is_versioned
+  
+  has_many :connectors, :order =&gt; &quot;connectors.container, connectors.position&quot;
+  named_scope :connected_to, lambda { |b| {:include =&gt; :connectors, 
+    :conditions =&gt; ['connectors.connectable_id = ? and connectors.connectable_type = ? and connectors.connectable_version = ?', b.id, b.class.base_class.name, b.version]} 
+  }  
   
   has_one :section_node, :as =&gt; :node
   
   belongs_to :template, :class_name =&gt; &quot;PageTemplate&quot;
   
-  #This association uses the version of the instance
-  #This should be used when you have a page object that may or may not be the latest version of the page
-  #Because it will give you the connectors for the specific version
-  has_many :version_connectors, :class_name =&gt; &quot;Connector&quot;, :conditions =&gt; 'connectors.page_version = #{version}', :order =&gt; &quot;connectors.position&quot;
-  
-  #This joins with the pages table, so therefore is only used when working with the latest version of the page
-  has_many :connectors, :include =&gt; :page, :conditions =&gt; 'pages.version = connectors.page_version', :order =&gt; &quot;connectors.position&quot;
-  
-  after_update :copy_connectors!
   before_validation :append_leading_slash_to_path
   before_destroy :delete_connectors
   
   validate :path_unique?
-
-  named_scope :connected_to_block, lambda { |b| {:include =&gt; :connectors, :conditions =&gt; ['connectors.content_block_id = ? and connectors.content_block_type = ? and connectors.content_block_version = ?', b.id, b.class.name, b.version]} }
+          
+  def after_build_new_version(new_version)
+    copy_connectors
+    true
+  end  
+  
+  def copy_connectors
+    copy_from_version = @copy_connectors_from_version ? @copy_connectors_from_version : version - 1
+    
+    connectors.for_page_version(copy_from_version).all(:order =&gt; &quot;connectors.container, connectors.position&quot;).each do |c|
+      connectable = c.connectable_type.constantize.versioned? ? c.connectable.as_of_version(c.connectable_version) : c.connectable
+      
+      #If are publishing this page, We need to publish the other page if it is not already published
+      if published? &amp;&amp; c.connectable_type.constantize.publishable? &amp;&amp; !c.connectable.published?
+        connectable.publish_by_page!(self)
+      end      
+      
+      #If we are copying connectors from a previous version, that means we are reverting this page,
+      #in which case we should create a new version of the block, and connect this page to that block
+      if @copy_connectors_from_version &amp;&amp; connectable.class.versioned? &amp;&amp; !connectable.current_version?
+        connectable = connectable.class.find(connectable.id)
+        connectable.published_by_page = self if connectable.class.publishable?
+        connectable.revert_to(c.connectable_version)
+      end
+      
+      connectors.build(
+        :page_version =&gt; version, 
+        :connectable =&gt; connectable, 
+        :connectable_version =&gt; connectable.version,         
+        :container =&gt; c.container, 
+        :position =&gt; c.position
+      )
+    end
     
-  named_scope :draft, :conditions =&gt; {:published =&gt; false}
-  named_scope :not_archived, :conditions =&gt; {:archived =&gt; false}
-  named_scope :not_hidden, :conditions =&gt; {:hidden =&gt; false}
+    @copy_connectors_from_version = nil    
+    true
+  end  
     
-  def self.find_by_content_block(content_block, content_block_version=nil)
-    all(:include =&gt; :connectors,
-      :conditions =&gt; ['connectors.content_block_id = ? and connectors.content_block_type = ? and connectors.content_block_version = ?', 
-        content_block.id, content_block.class.name, (content_block_version || content_block.version)])
+  def create_connector(connectable, container)
+    transaction do
+      raise &quot;Connectable is nil&quot; unless connectable
+      raise &quot;Container is required&quot; if container.blank?
+      update_attributes(:version_comment =&gt; &quot;#{connectable} was added to the '#{container}' container&quot;,
+        :publish_on_save =&gt; (published? &amp;&amp; connectable.connected_page &amp;&amp; 
+          (connectable.class.publishable? ? connectable.published? : true)))
+      Connector.create(
+        :page =&gt; self,
+        :page_version =&gt; version,
+        :connectable =&gt; connectable,
+        :connectable_version =&gt; connectable.class.versioned? ? connectable.version : nil, 
+        :container =&gt; container)      
+    end
+  end  
+  
+  %w(up down to_top to_bottom).each do |d|
+    define_method(&quot;move_connector_#{d}&quot;) do |connector|
+      move_connector(connector, d)
+    end
   end
+
+  def move_connector(connector, direction)
+    transaction do
+      raise &quot;Connector is nil&quot; unless connector
+      raise &quot;Direction is nil&quot; unless direction
+      orientation = direction[/_/] ? &quot;#{direction.sub('_', ' the ')} of&quot; : &quot;#{direction} within&quot;
+      update_attributes(:version_comment =&gt; &quot;#{connector.connectable} was moved #{orientation} the '#{connector.container}' container&quot;)
+      connectors.for_page_version(version).like(connector).first.send(&quot;move_#{direction}&quot;)
+    end    
+  end  
   
+  def remove_connector(connector)
+    transaction do
+      raise &quot;Connector is nil&quot; unless connector
+      update_attributes(:version_comment =&gt; &quot;#{connector.connectable} was removed from the '#{connector.container}' container&quot;)
+      
+      #The logic of this is to go ahead and let the container get copied forward, then delete the new connector
+      if new_connector = connectors.for_page_version(version).like(connector).first
+        new_connector.destroy
+      else
+        raise &quot;Error occurred while trying to remove connector #{connector.id}&quot;
+      end
+    end
+  end          
+          
+  def delete_connectors
+    connectors.for_page_version(version).all.each{|c| c.destroy }
+  end        
+         
+  #This is done to let copy_connectors know which version to pull from
+  #copy_connectors will get called later as an after_update callback
+  alias_method :original_revert_to, :revert_to
+  def revert_to(version)
+    @copy_connectors_from_version = version
+    original_revert_to(version)
+  end         
+          
   def file_size
     &quot;?&quot;
   end
@@ -60,121 +144,12 @@ class Page &lt; ActiveRecord::Base
     title.blank? ? name : title
   end
   
-  #Valid options:
-  #  except = An array of connector ids not to copy
-  def copy_connectors!(options={})
-          
-    #@_copy_connectors_from_version gets set in the revert_to method, otherwise is unset    
-    page_version = @_copy_connectors_from_version || (version-1)
-    conditions = ['page_id = ? and page_version = ?', id, page_version]
-
-    #This is primarily for the case of removing a connector, 
-    #where there is a connector we want to not carry forward
-    if options[:except]
-      conditions.first &lt;&lt; ' and id not in(?)'
-      conditions &lt;&lt; options[:except]
-    end
-
-    Connector.all(:conditions =&gt; conditions, :order =&gt; &quot;page_id, page_version, container, position&quot;).each do |c|
-      attrs = c.attributes.without(&quot;id&quot;, &quot;created_at&quot;, &quot;updated_at&quot;)
-      con = Connector.new(attrs)        
-
-      if published? &amp;&amp; !con.content_block.published?
-        con.content_block.updated_by_page = self
-        con.content_block.publish!(updated_by)
-        con.content_block_version += 1 if con.content_block.versionable?
-      end
-
-      #If we are copying connectors from a previous version, that means we are reverting this page,
-      #in which case we should create a new version of the block, and connect this page to that block
-      if @_copy_connectors_from_version
-        block = c.content_block
-        
-        #If this is connected to an older version of the block,
-        #then we have to get the latest version of the block,
-        #revert that to whatever version this connector is pointing to
-        #and connect the page to the new version of the block
-        unless block.current_version?
-          block = block.class.find(block.id)
-          block.updated_by_page = self
-          block.revert_to(c.content_block_version, updated_by)
-          # block.revert_to_without_save(c.content_block_version, updated_by)
-          # block.instatiate_revision.save!
-          # block.send(:update_without_callbacks)
-        end
-        
-        con.content_block = block
-        con.content_block_version = block.version
-      end
-
-      con.page_version = version
-      con.save!      
-    end
-
-  end
-
   %w(up down to_top to_bottom).each do |d|
     define_method(&quot;move_connector_#{d}&quot;) do |connector|
       move_connector(connector, d)
     end
   end
-
-  def move_connector(connector, direction)
-    transaction do
-      orientation = direction[/_/] ? &quot;#{direction.sub('_', ' the ')} of&quot; : &quot;#{direction} within&quot;
-      self.revision_comment = &quot;#{connector.content_block.display_name} '#{connector.content_block.name}' was moved #{orientation} the '#{connector.container}' container&quot;
-      create_new_version!
-      copy_connectors!
-      Connector.first(:conditions =&gt; { :page_id =&gt; id, 
-        :page_version =&gt; version, 
-        :content_block_id =&gt; connector.content_block_id, 
-        :content_block_type =&gt; connector.content_block_type,
-        :content_block_version =&gt; connector.content_block_version,
-        :container =&gt; connector.container }).send(&quot;move_#{direction}&quot;)
-    end    
-  end
-
-  def add_content_block!(content_block, container)
-    transaction do
-      self.revision_comment = &quot;#{content_block.display_name} '#{content_block.name}' was added to the '#{container}' container&quot;
-      if published? &amp;&amp; content_block.published? &amp;&amp; content_block.connected_page
-        self.published = true
-      else
-        set_published
-      end
-      create_new_version!
-      copy_connectors!
-      Connector.create!(:page_id =&gt; id, 
-        :page_version =&gt; version, 
-        :content_block =&gt; content_block, 
-        :content_block_version =&gt; content_block.version,
-        :container =&gt; container)
-    end
-  end
-  
-  def destroy_connector(connector)
-    transaction do
-      self.revision_comment = &quot;#{connector.content_block.display_name} '#{connector.content_block.name}' was removed from the '#{connector.container}' container&quot;
-      set_published
-      create_new_version!
-      copy_connectors!(:except =&gt; [connector.id])
-      reload
-      connector.freeze
-    end
-  end
-
-  #This is done to let copy_connectors! know which version to pull from
-  #copy_connectors! will get called later as an after_update callback
-  alias_method :original_revert_to, :revert_to
-  def revert_to(version, user)
-    @_copy_connectors_from_version = version
-    original_revert_to(version, user)
-  end
     
-  def delete_connectors
-    Connector.delete_all &quot;page_id = #{id}&quot;
-  end
-  
   def append_leading_slash_to_path
     if path.blank?
       self.path = &quot;/&quot;
@@ -208,37 +183,11 @@ class Page &lt; ActiveRecord::Base
     
   #Returns true if the block attached to each connector in the given container are published
   def container_published?(container)
-    connectors.all(:include =&gt; :page, :conditions =&gt; {:container =&gt; container.to_s}).all?{|c| c.content_block.published?}
-  end
-  
-  def hide(updated_by)
-    self.publish_on_save = published?
-    self.hidden = true
-    self.updated_by_user = updated_by
-    save    
-  end
-  
-  def hide!(updated_by)
-    self.publish_on_save = published?
-    self.hidden = true
-    self.updated_by_user = updated_by
-    save!    
-  end
-
-  def archive(updated_by)
-    self.publish_on_save = published?
-    self.archived = true
-    self.updated_by_user = updated_by
-    save
-  end
-
-  def archive!(updated_by)
-    self.publish_on_save = published?
-    self.archived = true
-    self.updated_by_user = updated_by
-    save!    
+    connectors.for_page_version(version).in_container(container.to_s).all? do |c| 
+      c.connectable_type.constantize.publishable? ? c.connectable.published? : true
+    end
   end
-  
+    
   def self.find_live_by_path(path)
     page = find(:first, :conditions =&gt; {:path =&gt; path})
     page ? page.live_version : nil</diff>
      <filename>app/models/page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 class Portlet &lt; ActiveRecord::Base
 
   has_flex_attributes
-  acts_as_content_block :versioning =&gt; false
+  acts_as_content_block :versioned =&gt; false, :publishable =&gt; false
   validates_presence_of :name
 
   attr_accessor :request, :response, :params, :session</diff>
      <filename>app/models/portlet.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@
   &lt;% if @block.respond_to?(:versionable?) &amp;&amp; @block.versionable? %&gt;
     &lt;li&gt;&lt;b&gt;Status:&lt;/b&gt; &lt;%= status_icon(@block.status) %&gt; &lt;%= @block.status_name %&gt;&lt;/li&gt;
   &lt;% end -%&gt;
-  &lt;% if @block.respond_to?(:connected_pages) %&gt;
+  &lt;% if @block.class.connectable? %&gt;
     &lt;li&gt;&lt;b&gt;Used on:&lt;/b&gt; &lt;%= link_to_usages(@block) %&gt; pages&lt;/li&gt;
   &lt;% end -%&gt;
   &lt;% if @block.respond_to?(:versionable?) &amp;&amp; @block.versionable? &amp;&amp; !@block.current_version? %&gt;&lt;li&gt;</diff>
      <filename>app/views/cms/blocks/_block_info.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@
 &lt;%= link_to &quot;Add New #{@content_type.display_name}&quot;, cms_path(:blocks, @content_type.content_block_type.pluralize, :new) %&gt;
 &lt;%= link_to 'View', cms_path(:blocks, @content_type.content_block_type.pluralize, :show, @block) %&gt;
 &lt;%= link_to 'Edit', cms_path(:blocks, @content_type.content_block_type.pluralize, :edit, @block) %&gt;
-&lt;%= @block.respond_to?(:versionable?) &amp;&amp; @block.versionable? ? (link_to 'Revisions', cms_path(@block, :revisions), {:id =&gt; &quot;revisions_link&quot;}) : 'Revisions' %&gt;
+&lt;%= @block.class.versioned? ? (link_to 'Revisions', cms_path(@block, :revisions)) : 'Revisions' %&gt;
 &lt;%= link_to &quot;Delete&quot;, cms_path(:blocks, @content_type.name.underscore.pluralize, :destroy, @block), :http_method =&gt; :delete, :confirm =&gt; &quot;Are you sure you want to delete '#{@block.name}'?&quot; %&gt;
 &lt;%= false ? (link_to 'Assign', cms_path(@block, :assign), :http_method =&gt; :post) : &quot;Assign&quot; %&gt;
 &lt;% able_to? :publish_content do -%&gt;</diff>
      <filename>app/views/cms/blocks/_toolbar.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@
         &lt;% end %&gt;
         &lt;td&gt;&lt;%= block.updated_at.to_s(:date) %&gt;&lt;/td&gt;
         &lt;% if @blocks.first.respond_to?(:connected_pages) %&gt;&lt;td class=&quot;used&quot;&gt;&lt;%= link_to_usages(block) %&gt;&lt;/td&gt;&lt;% end %&gt;
-        &lt;% if @blocks.first.respond_to?(:status) %&gt;&lt;td class=&quot;block_status&quot;&gt;&lt;%=  status_icon(block.status) %&gt;&lt;/td&gt;&lt;% end %&gt;
+        &lt;% if @blocks.first.respond_to?(:status) %&gt;&lt;td class=&quot;block_status&quot;&gt;&lt;%= status_icon(block.status) %&gt;&lt;/td&gt;&lt;% end %&gt;
       &lt;/tr&gt;
     &lt;% end %&gt;
   &lt;/tbody&gt;</diff>
      <filename>app/views/cms/blocks/index.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -3,5 +3,5 @@
 &lt;h2&gt;View &lt;%= @block.name %&gt;&lt;/h2&gt;
 &lt;div id=&quot;block_content&quot;&gt;
   &lt;div class=&quot;header &lt;%= @block.published? ? 'published' : 'draft' %&gt;&quot;&gt;Block Contents&lt;/div&gt;
-  &lt;div class=&quot;content&quot;&gt;&lt;%= render_content_block(@block) %&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;%= render_connectable(@block) %&gt;&lt;/div&gt;
 &lt;/div&gt;</diff>
      <filename>app/views/cms/blocks/show.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -27,8 +27,8 @@
         &lt;% form_for :connector, :url =&gt; cms_path(:connectors, :create) do |f| %&gt;
           &lt;%= hidden_field_tag :page_id, @page.to_param %&gt;
           &lt;%= hidden_field_tag :container,  @container %&gt;
-          &lt;%= hidden_field_tag :content_block_type, block.content_block_type %&gt;
-          &lt;%= hidden_field_tag :content_block_id, block.id %&gt;
+          &lt;%= hidden_field_tag :connectable_type, block.class.name %&gt;
+          &lt;%= hidden_field_tag :connectable_id, block.id %&gt;
           &lt;%= image_submit_tag action_icon_src(:connect) %&gt;
         &lt;% end %&gt;
       &lt;/td&gt;</diff>
      <filename>app/views/cms/connectors/new.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@
   &lt;% end %&gt;
   &lt;iframe src=&quot;&lt;%= cms_path(:toolbar, :page_id =&gt; @page.id, :page_version =&gt; @page.version, :mode =&gt; @mode) %&gt;&quot; width=&quot;100%&quot; height=&quot;100&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; name=&quot;cms_toolbar&quot;&gt;&lt;/iframe&gt;
 &lt;% end %&gt;
-&lt;% @page.version_connectors.each do |c| %&gt;
+&lt;% @page.connectors.for_page_version(@page.version).each do |c| %&gt;
   &lt;% content_for(c.container.to_sym) do %&gt;
     &lt;%= render_connector c %&gt;
   &lt;% end %&gt;</diff>
      <filename>app/views/cms/content/show.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 
 &lt;h2&gt;Draft Pages&lt;/h2&gt;
 
-&lt;% if @draft_pages.empty? %&gt;
+&lt;% if @unpublished_pages.empty? %&gt;
   &lt;p&gt;All pages are published&lt;/p&gt;
 &lt;% else %&gt;  
   &lt;% form_tag cms_path(:pages, :publish) do %&gt;
@@ -18,11 +18,11 @@
         &lt;th&gt;Updated At&lt;/th&gt;
         &lt;th&gt;&lt;/th&gt;
       &lt;/tr&gt;
-      &lt;% @draft_pages.each do |page| %&gt;
+      &lt;% @unpublished_pages.each do |page| %&gt;
         &lt;tr&gt;
           &lt;td class=&quot;name&quot;&gt;&lt;%=h page.name %&gt;&lt;/td&gt;
           &lt;td class=&quot;path&quot;&gt;&lt;%= link_to page.path, page.path %&gt;&lt;/td&gt;
-          &lt;td class=&quot;comment&quot;&gt;&lt;%=h page.revision_comment %&gt;&lt;/td&gt;
+          &lt;td class=&quot;comment&quot;&gt;&lt;%=h page.version_comment %&gt;&lt;/td&gt;
           &lt;td class=&quot;updated_by&quot;&gt;&lt;%=h page.updated_by.login %&gt;&lt;/td&gt;
           &lt;td class=&quot;updated_at&quot;&gt;&lt;%= page.updated_at.strftime(&quot;%m/%d/%y %l:%M %p&quot;) %&gt;&lt;/td&gt;
           &lt;td class=&quot;select&quot;&gt;&lt;%= check_box_tag &quot;page_ids[]&quot;, page.id, false, :id =&gt; &quot;publish_page_#{page.id}&quot; %&gt;&lt;/td&gt;</diff>
      <filename>app/views/cms/dashboard/index.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
 &lt;div class=&quot;edit_block&quot;&gt;
-  &lt;div class=&quot;header &lt;%= connector.content_block.published? ? 'published' : 'draft' %&gt;&quot;&gt;
-    &lt;%= connector.content_block.name %&gt;
+  &lt;div class=&quot;header &lt;%= (connector.connectable.published? ? 'published' : 'draft') if connector.publishable? %&gt;&quot;&gt;
+    &lt;%= connector.connectable.name %&gt;
     &lt;div class=&quot;actions&quot;&gt;
-      &lt;%= link_to status_icon(connector.content_block.status), cms_path(connector.content_block)  %&gt;
-      &lt;%= link_to action_icon(:view), cms_path(connector.content_block) %&gt;
-      &lt;%= link_to action_icon(:edit), cms_path(connector.content_block, :edit, :_redirect_to =&gt; @page.path) %&gt;
-      &lt;% if @page.connectors.for_container(connector.container).count &gt; 1 %&gt;
+      &lt;%= link_to status_icon(connector.status), cms_path(connector.connectable)  %&gt;
+      &lt;%= link_to action_icon(:view), cms_path(connector.connectable) %&gt;
+      &lt;%= link_to action_icon(:edit), cms_path(connector.connectable, :edit, :_redirect_to =&gt; @page.path) %&gt;
+      &lt;% if @page.connectors.for_page_version(@page.version).in_container(connector.container).count &gt; 1 %&gt;
         &lt;%= link_to action_icon(:up), cms_path(connector, :move_up), :http_method =&gt; :put %&gt;
         &lt;%= link_to action_icon(:down), cms_path(connector, :move_down), :http_method =&gt; :put %&gt;
       &lt;% end %&gt;
@@ -13,6 +13,6 @@
     &lt;/div&gt;
   &lt;/div&gt;
   &lt;div class=&quot;content&quot;&gt;
-    &lt;%= render_content_block(connector.content_block) %&gt;
+    &lt;%= render_connectable(connector.connectable) %&gt;
   &lt;/div&gt;
 &lt;/div&gt;
\ No newline at end of file</diff>
      <filename>app/views/cms/pages/_edit_connector.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@
   &lt;% @page.versions.all(:order =&gt; &quot;version desc&quot;).each_with_index do |r, i| %&gt;&lt;tr&gt;
     &lt;td&gt;&lt;%= link_to &quot;v.#{r.version}&quot;, cms_path(@page, :show_version, :version =&gt; r.version)%&gt;&lt;/td&gt;
     &lt;td&gt;&lt;%= status_icon(r.published?) %&gt;&lt;/td&gt;
-    &lt;td&gt;&lt;%=h r.revision_comment %&gt;&lt;/td&gt;
+    &lt;td&gt;&lt;%=h r.version_comment %&gt;&lt;/td&gt;
     &lt;td&gt;&lt;%= r.created_at.strftime(&quot;%b %e, %Y %l:%M %p&quot;) %&gt;&lt;/td&gt;
     &lt;td&gt;&lt;%= r.updated_by.login %&gt;&lt;/td&gt;
     &lt;td&gt;&lt;% if i &gt; 0 %&gt;&lt;%= link_to &quot;Revert&quot;, cms_path(@page, :revert_to, :version =&gt; r.version) %&gt;&lt;% end %&gt;&lt;/td&gt;</diff>
      <filename>app/views/cms/pages/revisions.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
     &lt;th&gt;Field&lt;/th&gt;
     &lt;th&gt;Value&lt;/th&gt;
   &lt;/tr&gt;
-  &lt;% other_version.attributes.to_a.reject{|e| ['id', 'deleted','version','lock_version','created_at','updated_by_id','updated_at','revision_comment', 'published','hidden','archived'].include?(e.first) }.sort_by(&amp;:first).each do |field, value| %&gt;&lt;tr&gt;
+  &lt;% other_version.attributes.to_a.reject{|e| ['id', 'deleted','version','lock_version','created_at','updated_by_id','updated_at','version_comment', 'published','hidden','archived'].include?(e.first) }.sort_by(&amp;:first).each do |field, value| %&gt;&lt;tr&gt;
     &lt;td&gt;&lt;%=h field %&gt;&lt;/td&gt;
     &lt;td&gt;&lt;%=h value %&gt;&lt;/td&gt;
   &lt;/tr&gt;&lt;% end %&gt;</diff>
      <filename>app/views/cms/shared/_version_conflict_diff.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -10,9 +10,9 @@
     &lt;%= link_to &quot;Revisions&quot;, cms_path(@page, :revisions), :target =&gt; &quot;_top&quot; %&gt;
     &lt;%= link_to &quot;Delete&quot;, cms_path(@page, :destroy), :http_method =&gt; :delete, :confirm =&gt; &quot;Are you sure you want to delete '#{@page.name}'?&quot;, :target =&gt; &quot;_top&quot; %&gt;
 
-    &lt;%= link_to &quot;Assign&quot;, &quot;#&quot; %&gt;
+    &lt;%= link_to &quot;Assign&quot;, &quot;#&quot;, :target =&gt; &quot;_top&quot; %&gt;
     &lt;% able_to? :publish_content do %&gt;
-      &lt;%= @page.published? ? &quot;Publish&quot; : link_to(&quot;Publish&quot;, cms_path(@page, :publish), :http_method =&gt; :put) %&gt;
+      &lt;%= @page.published? ? &quot;Publish&quot; : link_to(&quot;Publish&quot;, cms_path(@page, :publish), :http_method =&gt; :put, :target =&gt; &quot;_top&quot;) %&gt;
     &lt;% end %&gt;
   &lt;/div&gt;  
   &lt;div&gt;</diff>
      <filename>app/views/layouts/_page_toolbar.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,8 @@ module FixtureReplacement
     a.page = default_page
     a.page_version = 1
     a.container = &quot;main&quot;
-    a.content_block = default_html_block
+    a.connectable = default_html_block
+    a.connectable_version = 1
 	end
 
   attributes_for :content_type do |a|
@@ -38,8 +39,7 @@ module FixtureReplacement
 
   attributes_for :file_block do |a|
     a.name = &quot;TestFileBlock#{Sequence.next}&quot;
-    a.attachment_file_name = &quot;#{a.name.to_slug}.pdf&quot;    
-    a.updated_by_user = default_user    
+    a.attachment_file_name = &quot;#{a.name.to_slug}.pdf&quot;  
   end
 
   attributes_for :group do |a|
@@ -53,28 +53,23 @@ module FixtureReplacement
   attributes_for :html_block do |a|
     a.name = &quot;About Us&quot;
     a.content = &quot;&lt;h1&gt;About Us&lt;/h1&gt;\n&lt;p&gt;Lorem ipsum dolor sit amet...&lt;/p&gt;&quot;
-    a.updated_by_user = default_user
 	end
 
   attributes_for :image_block do |a|
     a.name = &quot;TestImageBlock#{Sequence.next}&quot;
     a.attachment_file_name = &quot;#{a.name.to_slug}.jpg&quot;
-    a.updated_by_user = default_user
   end
 
   attributes_for :link do |a|
     a.name = &quot;ExampleLink#{Sequence.next}&quot;
     a.url = &quot;http://www.example#{Sequence.next}.com&quot;
-    a.updated_by_user = default_user
   end
 
   attributes_for :page do |a|
-    a.name = &quot;Home #{Sequence.next}&quot;
+    a.name = &quot;Page #{Sequence.next}&quot;
     a.path = &quot;/#{a.name.gsub(/\s/,'_').downcase}&quot;
     a.template = default_page_template
     a.section = default_section
-    a.updated_by_user = default_user
-    a.version = 1
 	end
 
   attributes_for :page_template do |a|</diff>
      <filename>db/example_data.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 # Load up data that was created in load seed data migration
-cmsadmin = User.first(:conditions =&gt; {:login =&gt; 'cmsadmin'})
+User.current = User.first(:conditions =&gt; {:login =&gt; 'cmsadmin'})
 root_section = Section.root.first
 home_page = Page.first(:conditions =&gt; {:name =&gt; &quot;Home&quot;})
 
@@ -11,7 +11,7 @@ create_section(:about, :name =&gt; &quot;About&quot;, :parent =&gt; sections(:root), :path =&gt; &quot;/
 create_section(:people, :name =&gt; &quot;People&quot;, :parent =&gt; sections(:about), :path =&gt; &quot;/people&quot;)
 create_section(:careers, :name =&gt; &quot;Careers&quot;, :parent =&gt; sections(:about), :path =&gt; &quot;/careers&quot;)
 
-cmsadmin.groups.each{|g| g.sections &lt;&lt; Section.all }
+User.current.groups.each{|g| g.sections &lt;&lt; Section.all }
 
 create_page_template(:two_column, :name =&gt; &quot;Two Column&quot;, :file_name =&gt; &quot;two_column&quot;, :language =&gt; &quot;erb&quot;, :body=&gt; &lt;&lt;-TEMPLATE)
 &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
@@ -37,24 +37,24 @@ create_page_template(:two_column, :name =&gt; &quot;Two Column&quot;, :file_name =&gt; &quot;two_colu
 &lt;/html&gt;
 TEMPLATE
 
-create_page(:about, :name =&gt; &quot;About Us&quot;, :path =&gt; &quot;/about&quot;, :section =&gt; sections(:about), :template =&gt; page_templates(:two_column), :updated_by_user =&gt; cmsadmin)
-create_page(:kerry, :name =&gt; &quot;Kerry Gunther&quot;, :path =&gt; &quot;/people/kerry&quot;, :section =&gt; sections(:people), :template =&gt; page_templates(:two_column), :updated_by_user =&gt; cmsadmin)
-create_page(:pat, :name =&gt; &quot;Patrick Peak&quot;, :path =&gt; &quot;/people/pat&quot;, :section =&gt; sections(:people), :template =&gt; page_templates(:two_column), :updated_by_user =&gt; cmsadmin)
-create_page(:paul, :name =&gt; &quot;Paul Barry&quot;, :path =&gt; &quot;/people/paul&quot;, :section =&gt; sections(:people), :template =&gt; page_templates(:two_column), :updated_by_user =&gt; cmsadmin)
+create_page(:about, :name =&gt; &quot;About Us&quot;, :path =&gt; &quot;/about&quot;, :section =&gt; sections(:about), :template =&gt; page_templates(:two_column))
+create_page(:kerry, :name =&gt; &quot;Kerry Gunther&quot;, :path =&gt; &quot;/people/kerry&quot;, :section =&gt; sections(:people), :template =&gt; page_templates(:two_column))
+create_page(:pat, :name =&gt; &quot;Patrick Peak&quot;, :path =&gt; &quot;/people/pat&quot;, :section =&gt; sections(:people), :template =&gt; page_templates(:two_column))
+create_page(:paul, :name =&gt; &quot;Paul Barry&quot;, :path =&gt; &quot;/people/paul&quot;, :section =&gt; sections(:people), :template =&gt; page_templates(:two_column))
 
-create_page(:test, :name =&gt; &quot;Test&quot;, :path =&gt; &quot;/test&quot;, :section =&gt; sections(:root), :template =&gt; page_templates(:main), :updated_by_user =&gt; cmsadmin)
-create_html_block(:test, :name =&gt; &quot;Test&quot;, :connect_to_page_id =&gt; pages(:test).id, :connect_to_container =&gt; &quot;main&quot;, :updated_by_user =&gt; cmsadmin)
-pages(:test).publish!(cmsadmin)
+create_page(:test, :name =&gt; &quot;Test&quot;, :path =&gt; &quot;/test&quot;, :section =&gt; sections(:root), :template =&gt; page_templates(:main))
+create_html_block(:test, :name =&gt; &quot;Test&quot;, :connect_to_page_id =&gt; pages(:test).id, :connect_to_container =&gt; &quot;main&quot;)
+pages(:test).publish!
 
-create_html_block(:sidebar, :name =&gt; &quot;Sidebar&quot;, :content =&gt; &quot;&lt;ul&gt;&lt;li&gt;&lt;a href=\&quot;/\&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=\&quot;/about\&quot;&gt;About Us&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&quot;, :publish_on_save =&gt; true, :updated_by_user =&gt; cmsadmin)
-create_html_block(:about_us, :name =&gt; &quot;About Us&quot;, :content =&gt; &quot;We are super fantastic&quot;, :publish_on_save =&gt; true, :updated_by_user =&gt; cmsadmin)
+create_html_block(:sidebar, :name =&gt; &quot;Sidebar&quot;, :content =&gt; &quot;&lt;ul&gt;&lt;li&gt;&lt;a href=\&quot;/\&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=\&quot;/about\&quot;&gt;About Us&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&quot;, :publish_on_save =&gt; true)
+create_html_block(:about_us, :name =&gt; &quot;About Us&quot;, :content =&gt; &quot;We are super fantastic&quot;, :publish_on_save =&gt; true)
 
-home_page.add_content_block!(html_blocks(:sidebar), &quot;sidebar&quot;)
-home_page.publish!(cmsadmin)
+home_page.create_connector(html_blocks(:sidebar), &quot;sidebar&quot;)
+home_page.publish!
 
-pages(:about).add_content_block!(html_blocks(:about_us), &quot;main&quot;)
-pages(:about).add_content_block!(html_blocks(:sidebar), &quot;sidebar&quot;)
-pages(:about).publish!(cmsadmin)
+pages(:about).create_connector(html_blocks(:about_us), &quot;main&quot;)
+pages(:about).create_connector(html_blocks(:sidebar), &quot;sidebar&quot;)
+pages(:about).publish!
 
 create_attachment_file(:xml, :data =&gt; &quot;&lt;root&gt;\n  &lt;data&gt;Test&lt;/data&gt;\n&lt;/root&gt;\n&quot;)
 create_attachment_file(:logo, :data =&gt; open(File.join(Rails.root, &quot;public/images/cms/browser_media_logo.png&quot;)){|f| f.read})
@@ -62,8 +62,8 @@ create_attachment_file(:logo, :data =&gt; open(File.join(Rails.root, &quot;public/images
 create_attachment(:xml, :file_type =&gt; &quot;text/xml&quot;, :section =&gt; sections(:root), :file_extension =&gt; &quot;xml&quot;, :file_size =&gt; 36, :file_name =&gt; &quot;test.xml&quot;, :attachment_file =&gt; attachment_files(:xml))
 create_attachment(:logo, :file_type =&gt; &quot;image/png&quot;, :section =&gt; sections(:root), :file_extension =&gt; &quot;png&quot;, :file_size =&gt; 2305, :file_name =&gt; &quot;logo.png&quot;, :attachment_file =&gt; attachment_files(:logo))
 
-create_file_block(:xml, :name =&gt; &quot;XML&quot;, :attachment =&gt; attachments(:xml), :updated_by_user =&gt; cmsadmin, :publish_on_save =&gt; true)
-create_image_block(:logo, :name =&gt; &quot;Logo&quot;, :attachment =&gt; attachments(:logo), :updated_by_user =&gt; cmsadmin, :publish_on_save =&gt; true)
+create_file_block(:xml, :name =&gt; &quot;XML&quot;, :attachment =&gt; attachments(:xml), :publish_on_save =&gt; true)
+create_image_block(:logo, :name =&gt; &quot;Logo&quot;, :attachment =&gt; attachments(:logo), :publish_on_save =&gt; true)
 
 create_dynamic_portlet(:recently_updated_pages,
   :name =&gt; 'Recently Updated Pages',  </diff>
      <filename>db/initial_data.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,11 +3,11 @@ class CreateConnectors &lt; ActiveRecord::Migration
     create_table :connectors do |t|
       t.integer :page_id
       t.integer :page_version
+      t.integer :connectable_id
+      t.string :connectable_type
+      t.integer :connectable_version
       t.string :container
-      t.integer :content_block_id
-      t.string :content_block_type
-      t.integer :content_block_version
-      t.string :position
+      t.integer :position
       t.timestamps
       
     end</diff>
      <filename>db/migrate/20080815214539_create_connectors.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,7 @@ class CreatePortlets &lt; ActiveRecord::Migration
       t.string :name
       t.boolean :archived, :default =&gt; false      
       t.boolean :deleted, :default =&gt; false
+      t.integer :created_by_id, :updated_by_id
       t.timestamps
     end
     </diff>
      <filename>db/migrate/20080819213733_create_portlets.rb</filename>
    </modified>
    <modified>
      <diff>@@ -53,16 +53,16 @@ class LoadSeedData &lt; ActiveRecord::Migration
 &lt;/html&gt;
     TEMPLATE
         
-    create_page(:home, :name =&gt; &quot;Home&quot;, :path =&gt; &quot;/&quot;, :section =&gt; sections(:root), :template =&gt; page_templates(:main), :updated_by_user =&gt; users(:cmsadmin))
-    create_page(:not_found, :name =&gt; &quot;Not Found&quot;, :path =&gt; &quot;/system/not_found&quot;, :section =&gt; sections(:system), :template =&gt; page_templates(:main), :updated_by_user =&gt; users(:cmsadmin), :publish_on_save =&gt; true)
-    create_page(:access_denied, :name =&gt; &quot;Access Denied&quot;, :path =&gt; &quot;/system/access_denied&quot;, :section =&gt; sections(:system), :template =&gt; page_templates(:main), :updated_by_user =&gt; users(:cmsadmin), :publish_on_save =&gt; true)
-    create_page(:server_error, :name =&gt; &quot;Server Error&quot;, :path =&gt; &quot;/system/server_error&quot;, :section =&gt; sections(:system), :template =&gt; page_templates(:main), :updated_by_user =&gt; users(:cmsadmin), :publish_on_save =&gt; true)
+    create_page(:home, :name =&gt; &quot;Home&quot;, :path =&gt; &quot;/&quot;, :section =&gt; sections(:root), :template =&gt; page_templates(:main))
+    create_page(:not_found, :name =&gt; &quot;Not Found&quot;, :path =&gt; &quot;/system/not_found&quot;, :section =&gt; sections(:system), :template =&gt; page_templates(:main), :publish_on_save =&gt; true)
+    create_page(:access_denied, :name =&gt; &quot;Access Denied&quot;, :path =&gt; &quot;/system/access_denied&quot;, :section =&gt; sections(:system), :template =&gt; page_templates(:main), :publish_on_save =&gt; true)
+    create_page(:server_error, :name =&gt; &quot;Server Error&quot;, :path =&gt; &quot;/system/server_error&quot;, :section =&gt; sections(:system), :template =&gt; page_templates(:main), :publish_on_save =&gt; true)
 
-    create_html_block(:hello_world, :name =&gt; &quot;Hello World&quot;, :content =&gt; &quot;&lt;h1&gt;Hello, World!&lt;/h1&gt;&quot;, :publish_on_save =&gt; true, :updated_by_user =&gt; users(:cmsadmin))
+    create_html_block(:hello_world, :name =&gt; &quot;Hello World&quot;, :content =&gt; &quot;&lt;h1&gt;Hello, World!&lt;/h1&gt;&quot;, :publish_on_save =&gt; true)
 
-    pages(:home).add_content_block!(html_blocks(:hello_world), &quot;main&quot;)         
+    pages(:home).create_connector(html_blocks(:hello_world), &quot;main&quot;)         
     
-    pages(:home).publish!(users(:cmsadmin))   
+    pages(:home).publish! 
         
     puts &quot;*************************************************&quot;    
     puts &quot;* YOUR CMS username/password is: cmsadmin/#{pwd}&quot;    </diff>
      <filename>db/migrate/20081114172307_load_seed_data.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,9 +16,6 @@ ActiveRecord::Base.send(:include, ActsAsList)
 require 'flex_attributes'
 ActiveRecord::Base.send(:include, FlexAttributes)
 
-require 'version_fu'
-ActiveRecord::Base.send(:include, VersionFu)
-
-#Include CMS extensions
-ActiveRecord::Base.send(:include, Cms::Acts::ContentObject)
-ActiveRecord::Base.extend(Cms::Acts::Paranoid)
\ No newline at end of file
+#Include CMS Behaviors
+ActiveRecord::Base.extend Cms::Acts::ContentObject
+require 'cms/behaviors'
\ No newline at end of file</diff>
      <filename>lib/browser_cms.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,148 +1,20 @@
 module Cms
   module Acts
     module ContentObject
-
-      def self.included(cls)
-        cls.extend MacroMethods
-      end
-
-      module MacroMethods
-
-        def acts_as_content_block(options={})
-          acts_as_content_object(options)
-          include Cms::BlockSupport
-          if options[:versioning] == false
-            #has_many :connectors, :conditions =&gt; 'content_block_id = #{id} and content_block_type = #{self.class}', :order =&gt; &quot;position&quot;          
-            has_many :connectors, :as =&gt; :content_block, :order =&gt; &quot;position&quot;          
-          else
-            #after_create :update_connected_page
-            after_update :update_connected_pages
-            #has_many :connectors, :conditions =&gt; 'content_block_id = #{id} and content_block_type = #{self.class} and content_block_version = #{version}', :order =&gt; &quot;position&quot;          
-            has_many :connectors, :as =&gt; :content_block, :include =&gt; table_name, :conditions =&gt; &quot;#{table_name}.version = connectors.content_block_version&quot;, :order =&gt; &quot;position&quot;          
-          end
-        end
-
-        def acts_as_content_page(options={})
-          acts_as_content_object(options)
-        end
-
-        private
-        def acts_as_content_object(options={})
-          attr_accessor :publish_on_save
-          
-          before_save :set_published
-                    
-          if options[:versioning] == false
-            include NotVersionable
-          else
-            version_fu
-            
-            #We set the value of the the association to the value in the virtual attriute
-            #This makes sute that updated_by_user is explictly set on each update
-            versioned_class.belongs_to :updated_by, :class_name =&gt; &quot;User&quot;
-            attr_accessor :updated_by_user, :updated_by_user_id
-            belongs_to :updated_by, :class_name =&gt; &quot;User&quot;
-            before_validation :set_updated_by
-            
-            validates_presence_of :updated_by_id            
-            
-          end
-          is_paranoid
-
-          after_destroy :destroy_versions_if_destroyed
-
-          include InstanceMethods
-        end
-
-      end
-
-      module NotVersionable
-        #NotVersionable content objects are always published
-        attr_accessor :published
-        def published?
-          true
-        end
-      end
-
-      # These methods will be added to any object marked as acts_as_content_object or acts_as_content_page
-      module InstanceMethods
-        def publishable?
-          if versionable?
-            if new_record?
-              !connect_to_page_id              
-            else
-              connected_pages.count &lt; 1
-            end
-          else
-            false
-          end
-        end
-        def versionable?
-          self.respond_to?(:versions)
-        end
-
-        def self.included(cls)
-          cls.extend ClassMethods
-        end
-
-        def status_name
-          published? ? &quot;Published&quot; : &quot;Draft&quot;
-        end
-
-        def set_published
-          self.published = !!(publish_on_save)
-          self.publish_on_save = nil
-          true
-        end
-
-        def publish(updated_by)
-          self.publish_on_save = true
-          self.updated_by_user = updated_by
-          save          
-        end
-
-        def publish!(updated_by)
-          self.publish_on_save = true
-          self.updated_by_user = updated_by
-          save!          
-        end
+      def acts_as_content_block(options={})
+        is_archivable(options[:archiveable].is_a?(Hash) ? options[:archiveable] : {}) unless options[:archiveable] == false
+        is_connectable(options[:connectable].is_a?(Hash) ? options[:connectable] : {}) unless options[:connectable] == false
+        is_publishable(options[:publishable].is_a?(Hash) ? options[:publishable] : {}) unless options[:publishable] == false
+        uses_soft_delete(options[:soft_delete].is_a?(Hash) ? options[:soft_delete] : {}) unless options[:soft_delete] == false
+        is_userstamped(options[:userstamped].is_a?(Hash) ? options[:userstamped] : {}) unless options[:userstamped] == false  
+        is_versioned(options[:versioned].is_a?(Hash) ? options[:versioned] : {}) unless options[:versioned] == false
         
-        def live?
-          versionable? ? versions.count(:conditions =&gt; ['version &gt; ? AND published = ?', version, true]) == 0 &amp;&amp; published? : true
-        end
-
-        def live_version
-          if published?
-            self
-          else
-            live_version = versions.first(:conditions =&gt; {:published =&gt; true}, :order =&gt; &quot;version desc, id desc&quot;)
-            live_version ? as_of_version(live_version.version) : nil
-          end                
-        end
-        
-        def draft?
-          !published?
-        end
-
-        alias_method :in_progress?, :draft? 
-
-        def destroy_versions_if_destroyed
-          return unless versionable?
-          self.class.versioned_class.delete_all(&quot;#{self.class.versioned_foreign_key} = #{id}&quot;) if destroyed?
-        end
-
-        def status
-          published? ? :published : :draft
-        end
-
-        def set_updated_by
-          if updated_by_user_id
-            self.updated_by_id = updated_by_user_id
-          else
-            self.updated_by = updated_by_user
-          end
-        end
-
+        include InstanceMethods
+      end
+    end
+    module InstanceMethods
+      def to_s
+        &quot;#{self.class.name.titleize} '#{name}'&quot;
       end
     end
   end</diff>
      <filename>lib/cms/acts/content_object.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,28 +1,35 @@
 module Cms
   module Behaviors
     module Userstamping
-      def userstamped?
-        !!@is_userstamped
+      def self.included(model_class)
+        model_class.extend(MacroMethods)
       end
-      def is_userstamped
-        @is_userstamped = true
-        extend ClassMethods
-        include InstanceMethods
+      module MacroMethods      
+        def userstamped?
+          !!@is_userstamped
+        end
+        def is_userstamped(options={})
+          @is_userstamped = true
+          extend ClassMethods
+          include InstanceMethods
         
-        belongs_to :created_by, :class_name =&gt; &quot;User&quot;
-        belongs_to :updated_by, :class_name =&gt; &quot;User&quot;
+          belongs_to :created_by, :class_name =&gt; &quot;User&quot;
+          belongs_to :updated_by, :class_name =&gt; &quot;User&quot;
         
-        before_save :set_userstamps
+          before_save :set_userstamps
         
-        named_scope :created_by, lambda{|user| {:conditions =&gt; {:created_by =&gt; user}}}        
-        named_scope :updated_by, lambda{|user| {:conditions =&gt; {:updated_by =&gt; user}}}        
-      end
-      module ClassMethods
-      end
-      module InstanceMethods
-        def set_userstamps
-          self.created_by = User.current if new_record?
-          self.updated_by = User.current
+          named_scope :created_by, lambda{|user| {:conditions =&gt; {:created_by =&gt; user}}}        
+          named_scope :updated_by, lambda{|user| {:conditions =&gt; {:updated_by =&gt; user}}}        
+        end
+        module ClassMethods
+        end
+        module InstanceMethods
+          def set_userstamps
+            if new_record?
+              self.created_by = User.current 
+            end
+            self.updated_by = User.current
+          end
         end
       end
     end</diff>
      <filename>lib/cms/behaviors/userstamping.rb</filename>
    </modified>
    <modified>
      <diff>@@ -67,7 +67,7 @@ module Cms
     def connect_to_page
       unless connect_to_page_id.blank? || connect_to_container.blank?
         self.connected_page = Page.find(connect_to_page_id)
-        connected_page.add_content_block!(self, connect_to_container)
+        connected_page.create_connector(self, connect_to_container)
       end
     end
 
@@ -82,7 +82,7 @@ module Cms
     end
 
     def update_page(page)
-      page.update_attributes!(:new_revision_comment =&gt; &quot;Edited block&quot;, :publish_on_save =&gt; (published? &amp;&amp; page.published?), :updated_by_user =&gt; updated_by)
+      page.update_attributes!(:new_version_comment =&gt; &quot;Edited block&quot;, :publish_on_save =&gt; (published? &amp;&amp; page.published?), :updated_by_user =&gt; updated_by)
       page.connectors.all(:include =&gt; :page, :conditions =&gt; {:content_block_id =&gt; self.id, :content_block_type =&gt; self.class.name }).each do |conn|
         conn.increment!(:content_block_version)
       end      </diff>
      <filename>lib/cms/block_support.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,15 +7,16 @@ module ActiveRecord
         t = TableDefinition.new(self)
         t.primary_key(options[:primary_key] || Base.get_primary_key(table_name)) unless options[:id] == false
 
-        t.integer :version, :default =&gt; 1
+        t.integer :version
         t.integer :lock_version, :default =&gt; 0
         yield t
         t.boolean :published, :default =&gt; false
         t.boolean :deleted, :default =&gt; false
-        t.boolean :archived, :default =&gt; false        
-        t.timestamps
+        t.boolean :archived, :default =&gt; false
+        t.integer :created_by_id
         t.integer :updated_by_id
-        t.string :revision_comment
+        t.timestamps
+
         
         create_table_from_definition(table_name, options, t)
 
@@ -24,14 +25,17 @@ module ActiveRecord
         vt.primary_key(options[:primary_key] || Base.get_primary_key(table_name)) unless options[:id] == false
 
         vt.integer &quot;#{table_name.singularize}_id&quot;.to_sym
-        vt.integer :version, :default =&gt; 1
+        vt.integer :version
         yield vt    
         vt.boolean :published, :default =&gt; false
         vt.boolean :deleted, :default =&gt; false
         t.boolean :archived, :default =&gt; false        
-        vt.timestamps            
+        vt.string :version_comment
+        vt.integer :created_by_id
         vt.integer :updated_by_id
-        vt.string :revision_comment
+        vt.timestamps            
+        
+
         
         create_table_from_definition(&quot;#{table_name.singularize}_versions&quot;.to_sym, options, vt)
         </diff>
      <filename>lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,8 +4,6 @@ raise &quot;To avoid rake task loading problems: run 'rake clobber' in vendor/plugins
 # In rails 1.2, plugins aren't available in the path until they're loaded.
 # Check to see if the rspec plugin is installed first and require
 # it if it is.  If not, use the gem version.
-rspec_base = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec/lib')
-$LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
 require 'spec/rake/spectask'
 
 spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? &quot;db:test:prepare&quot; : :noop</diff>
      <filename>lib/tasks/rspec.rake</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
 #!/usr/bin/env ruby
-$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + &quot;/../vendor/plugins/rspec/lib&quot;))
+require 'rubygems'
 require 'spec'
 exit ::Spec::Runner::CommandLine.run(::Spec::Runner::OptionParser.parse(ARGV, STDERR, STDOUT))</diff>
      <filename>script/spec</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,7 @@ describe Cms::BlocksController do
     end
     it &quot;should have link to revisions&quot; do
       @action.call
-      response.should have_tag(&quot;a#revisions_link&quot;)
+      response.should have_tag(&quot;a&quot;, &quot;Revisions&quot;)
     end
   end
 
@@ -406,13 +406,9 @@ describe Cms::BlocksController do
     end
 
     describe &quot;destroying&quot; do
-      before(:each) do
-        @action = lambda { delete :destroy, :id =&gt; @block.id, :block_type =&gt; &quot;portlet&quot; }
-      end
       it &quot;should remove the row&quot; do
-        @action.call
-        delete = lambda {Portlet.find(@block.id)}
-        delete.should raise_error(ActiveRecord::RecordNotFound)
+        delete :destroy, :id =&gt; @block.id, :block_type =&gt; &quot;portlet&quot;
+        lambda { Portlet.find(@block.id) }.should raise_error(ActiveRecord::RecordNotFound)
       end
     end
   end</diff>
      <filename>spec/controllers/cms/blocks_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,27 +8,27 @@ describe Cms::ConnectorsController do
       @page = create_page(:section =&gt; root_section)
       @block = create_html_block(:connect_to_page_id =&gt; @page.id, :connect_to_container =&gt; &quot;main&quot;)
       @page.reload
-      @destroy_connector = lambda { delete :destroy, :id =&gt; @page.connectors.first.id }
+      @remove_connector = lambda { delete :destroy, :id =&gt; @page.connectors.for_page_version(@page.version).first.id }
 
     end
 
     it &quot;should create a new version the page&quot; do
-      @destroy_connector.should change(Page::Version, :count).by(1)
+      @remove_connector.should change(Page::Version, :count).by(1)
     end
 
     it &quot;should should increment the page version by 1&quot; do
       @page.version.should == 2
-      @destroy_connector.call
+      @remove_connector.call
       @page.reload.version.should == 3
     end
 
     it &quot;should destroy the connector&quot; do
-      @destroy_connector.call
-      @page.reload.connectors.should be_empty
+      @remove_connector.call
+      @page.reload.connectors.for_page_version(@page.version).should be_empty
     end
 
     it &quot;should redirect to the page&quot; do
-      @destroy_connector.call
+      @remove_connector.call
       response.should redirect_to(@page.path)
     end
   end</diff>
      <filename>spec/controllers/cms/connector_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -104,7 +104,7 @@ describe Cms::ContentController do
       end
       describe &quot;that has been archived&quot; do
         it &quot;should not be able to be found&quot; do
-          @file_block.update_attributes(:archived =&gt; true, :updated_by_user =&gt; admin_user)
+          @file_block.update_attributes(:archived =&gt; true)
           reset(:file_block)
           @file_block.attachment.should be_archived
           @action.call</diff>
      <filename>spec/controllers/cms/content_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,7 @@ describe Cms::PagesController do
     end
     it &quot;should publish all blocks on the page&quot; do
       @block = create_html_block(:name =&gt; 'foo')
-      @page.add_content_block!(@block, 'main')
+      @page.create_connector(@block, 'main')
       @action.call
       @block.reload.should be_published
     end
@@ -78,7 +78,7 @@ describe Cms::PagesController do
     end
     it &quot;should update the status&quot; do
       @action.call
-      @page.should be_in_progress
+      @page.should_not be_published
     end
   end
   </diff>
      <filename>spec/controllers/cms/pages_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -64,7 +64,7 @@ HTML
     end
     
     it &quot;should not show archived pages&quot; do
-      @pit.archive(create_user)
+      @pit.archive
       helper.render_menu.should_not have_tag(&quot;a[href=#{@pit.path}]&quot;)
     end
     </diff>
      <filename>spec/helpers/menu_helper_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,48 +1,48 @@
 require File.dirname(__FILE__) + '/../../spec_helper'
 
-describe &quot;A Content Object&quot; do
+describe &quot;A Content Object&quot;, :type =&gt; :model do
   before(:each) do
     @block = create_html_block(:name =&gt; &quot;Test&quot;)
   end
 
   it &quot;should add a default status to a block&quot; do
-    @block.should be_draft
+    @block.should_not be_published
   end
 
   it &quot;should allow blocks to be published&quot; do
-    @block.publish(create_user)
+    @block.publish
     @block = HtmlBlock.find(@block.id)
     @block.should be_published
   end
 
-  it &quot;should be live if it is published&quot; do
-    @block.publish(create_user)
-    @block.should be_live
+  it &quot;should be published if it is published&quot; do
+    @block.publish
+    @block.should be_published
   end
 
-  it &quot;should not be live if it is not published&quot; do
-    @block.should_not be_live
+  it &quot;should not be published if it is not published&quot; do
+    @block.should_not be_published
   end
 
   it &quot;should allow blocks to be marked as draft&quot; do
-    @block.publish(create_user)
+    @block.publish
     @block.publish_on_save = false
     @block.save!
-    @block.reload.should be_draft
+    @block.reload.should_not be_published
   end
 
-  it &quot;should support versioning&quot; do
-    @block.should be_versionable
+  it &quot;should be versioned&quot; do
+    @block.class.should be_versioned
   end
 
   it &quot;should respond to publish?&quot; do
-    @block.publish(create_user)
+    @block.publish
     @block.should be_published
   end
 
   it &quot;should respond to in_progress?&quot; do
     @block.publish_on_save = false
-    @block.should be_draft
+    @block.should_not be_published
   end
 
   it &quot;should respond to status_name&quot; do
@@ -62,26 +62,26 @@ describe &quot;A Content Object&quot; do
   
   describe &quot;revision comment&quot; do
     it &quot;should be set to 'Created' if it is a new instance&quot; do
-      @block.revision_comment.should == 'Created'
-      @block.as_of_version(@block.version).revision_comment.should == 'Created'
+      @block.current_version.version_comment.should == 'Created'
+      @block.as_of_version(@block.version).current_version.version_comment.should == 'Created'
     end
     it &quot;should be set to 'Name, Content edited' if name and content were changed&quot; do
       @block.name = &quot;Something Else&quot;
       @block.content = &quot;Whatever&quot;
       @block.save
-      @block.revision_comment.should == 'Name, Content edited'
-      @block.as_of_version(@block.version).revision_comment.should == 'Name, Content edited'
+      @block.current_version.version_comment.should == 'Changed content, name'
+      @block.as_of_version(@block.version).current_version.version_comment.should == 'Changed content, name'
     end
     it &quot;should not be changed if the object is not changed&quot; do
       @block.reload.save
-      @block.revision_comment.should == 'Created'
-      @block.as_of_version(@block.version).revision_comment.should == 'Created'
+      @block.current_version.version_comment.should == 'Created'
+      @block.as_of_version(@block.version).current_version.version_comment.should == 'Created'
     end
-    it &quot;should be set to the value of new_revision_comment if one is set&quot; do
-      @block.update_attributes(:name =&gt; &quot;Something Else&quot;, :new_revision_comment =&gt; &quot;Something Changed&quot;)
+    it &quot;should be set to the value of version_comment if one is set&quot; do
+      @block.update_attributes(:name =&gt; &quot;Something Else&quot;, :version_comment =&gt; &quot;Something Changed&quot;)
       @block.save
-      @block.revision_comment.should == &quot;Something Changed&quot;
-      @block.as_of_version(@block.version).revision_comment.should == &quot;Something Changed&quot;
+      @block.current_version.version_comment.should == &quot;Something Changed&quot;
+      @block.as_of_version(@block.version).current_version.version_comment.should == &quot;Something Changed&quot;
     end
   end
   
@@ -95,27 +95,21 @@ describe &quot;A Content Object&quot; do
     end
     describe &quot;without a new status&quot; do
       it &quot;should be draft&quot; do
-        @block.publish!(create_user)
+        @block.publish!
         @block.name = &quot;Whatever&quot;
         @block.save!
-        @block.should be_draft
+        @block.should_not be_published
       end
     end
   end
-  describe &quot;updating revision&quot; do
-    it &quot;should mark a content object as dirty anytime a comment is updated&quot; do
-      @block.new_revision_comment = @block.revision_comment
-      @block.should be_changed
-    end
-  end
   describe &quot;a non-versioned block that is connected to a page&quot; do
     describe &quot;when it is edited&quot; do
       before do
         @page = create_page(:section =&gt; root_section)
         @block = create_dynamic_portlet(:name =&gt; &quot;Test Portlet&quot;)
-        @page.add_content_block!(@block, &quot;main&quot;)
+        @page.create_connector(@block, &quot;main&quot;)
         reset(:page, :block)
-        @editing_the_block = lambda {@block.update_attribute(:name, &quot;something different&quot;)}
+        @editing_the_block = lambda {@block.update_attributes(:name =&gt; &quot;something different&quot;)}
       end
       it &quot;should not change the page version&quot; do
         @editing_the_block.call
@@ -126,18 +120,18 @@ describe &quot;A Content Object&quot; do
       end
       it &quot;should set the revision comment on the page&quot; do
         @editing_the_block.call
-        @page.reload.revision_comment.should == &quot;Dynamic Portlet 'Test Portlet' was added to the 'main' container&quot;
+        @page.reload.current_version.version_comment.should == &quot;Dynamic Portlet 'Test Portlet' was added to the 'main' container&quot;
       end
       it &quot;should create the right connectors&quot; do
         @editing_the_block.call
-        conns = Connector.all(:conditions =&gt; [&quot;content_block_id = ? and content_block_type = ?&quot;, @block.id, @block.class.base_class.name], :order =&gt; 'id')
+        conns = Connector.for_connectable(@block).all(:order =&gt; 'id')
         conns.size.should == 1
-        conns[0].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 2, :content_block =&gt; @block, :content_block_version =&gt; nil, :container =&gt; &quot;main&quot;)        
+        conns[0].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 2, :connectable =&gt; @block, :connectable_version =&gt; nil, :container =&gt; &quot;main&quot;)        
       end
       describe &quot;and saved&quot; do
-        it &quot;the page should not be live&quot; do
+        it &quot;the page should not be published&quot; do
           @editing_the_block.call
-          @page.should_not be_live
+          @page.should_not be_published
         end
       end
       describe &quot;and save and published&quot; do
@@ -145,21 +139,21 @@ describe &quot;A Content Object&quot; do
           before do
             @editing_the_block = lambda {@block.update_attributes(:name =&gt; &quot;something different&quot;, :publish_on_save =&gt; true)}
           end
-          it &quot;the page should be live&quot; do
+          it &quot;the page should be published&quot; do
             @editing_the_block.call
-            @page.reload.should_not be_live
+            @page.reload.should_not be_published
           end
         end
-        describe &quot;and the page is live then,&quot; do
+        describe &quot;and the page is published then,&quot; do
           before do
-            @page.publish!(create_user)
+            @page.publish!
             reset(:page)
             @editing_the_block = lambda {@block.update_attributes(:name =&gt; &quot;something different&quot;, :publish_on_save =&gt; true)}
           end
-          it &quot;the page should be live&quot; do
+          it &quot;the page should be published&quot; do
             @editing_the_block.call
             reset(:page)
-            @page.should be_live
+            @page.should be_published
           end
         end
       end
@@ -169,7 +163,7 @@ describe &quot;A Content Object&quot; do
     describe &quot;when it is edited&quot; do
       before do
         @page = create_page(:section =&gt; root_section)
-        @page.add_content_block!(@block, &quot;main&quot;)
+        @page.create_connector(@block, &quot;main&quot;)
         reset(:page, :block)
         @editing_the_block = lambda {@block.update_attribute(:name, &quot;something different&quot;)}
       end
@@ -182,41 +176,41 @@ describe &quot;A Content Object&quot; do
       end
       it &quot;should set the revision comment on the page&quot; do
         @editing_the_block.call
-        @page.reload.revision_comment.should =~ /^Edited block.*/
+        @page.reload.current_version.version_comment.should =~ /^Edited HtmlBlock#\d+/
       end
       it &quot;should create the right connectors&quot; do
         @editing_the_block.call
-        conns = Connector.all(:conditions =&gt; [&quot;content_block_id = ? and content_block_type = ?&quot;, @block.id, @block.class.name], :order =&gt; 'id')
+        conns = @block.connectors.all(:order =&gt; 'id')
         conns.size.should == 2
-        conns[0].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 2, :content_block =&gt; @block, :content_block_version =&gt; 1, :container =&gt; &quot;main&quot;)        
-        conns[1].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 3, :content_block =&gt; @block, :content_block_version =&gt; 2, :container =&gt; &quot;main&quot;)        
+        conns[0].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 2, :connectable =&gt; @block, :connectable_version =&gt; 1, :container =&gt; &quot;main&quot;)        
+        conns[1].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 3, :connectable =&gt; @block, :connectable_version =&gt; 2, :container =&gt; &quot;main&quot;)        
       end
       describe &quot;and saved&quot; do
-        it &quot;the page should not be live&quot; do
+        it &quot;the page should not be published&quot; do
           @editing_the_block.call
-          @page.should_not be_live
+          @page.should_not be_published
         end
       end
       describe &quot;and save and published&quot; do
         describe &quot;and the page is draft then,&quot; do
           before do
-            @editing_the_block = lambda {@block.update_attributes(:name =&gt; &quot;something different&quot;, :publish_on_save =&gt; true)}
+            @editing_the_block = lambda {@block.reload.update_attributes(:name =&gt; &quot;something different&quot;, :publish_on_save =&gt; true)}
           end
-          it &quot;the page should be live&quot; do
+          it &quot;the page should be published&quot; do
             @editing_the_block.call
-            @page.reload.should_not be_live
+            @page.reload.should_not be_published
           end
         end
-        describe &quot;and the page is live then,&quot; do
+        describe &quot;and the page is published then,&quot; do
           before do
-            @page.publish!(create_user)
+            @page.publish!
             reset(:page)
-            @editing_the_block = lambda {@block.update_attributes(:name =&gt; &quot;something different&quot;, :publish_on_save =&gt; true)}
+            @editing_the_block = lambda {@block.reload.update_attributes(:name =&gt; &quot;something different&quot;, :publish_on_save =&gt; true)}
           end
-          it &quot;the page should be live&quot; do
+          it &quot;the page should be published&quot; do
             @editing_the_block.call
             reset(:page)
-            @page.should be_live
+            @page.should be_published
           end
         end
       end
@@ -224,7 +218,7 @@ describe &quot;A Content Object&quot; do
   end 
 end
 
-describe &quot;Destroying a block&quot; do
+describe &quot;Destroying a block&quot;, :type =&gt; :model do
   before do
     @block = create_html_block
     @destroying_the_block = lambda { @block.destroy }
@@ -282,9 +276,4 @@ describe &quot;Destroying a block&quot; do
     HtmlBlock::Version.find(:all, &quot;html_block_id =&gt;#{@block.id}&quot;).size.should == 2
   end
 
-  it &quot;should remove all versions when doing destroy!&quot; do
-    @block.destroy!
-    lambda { HtmlBlock.find_with_deleted(@b) }.should raise_error(ActiveRecord::RecordNotFound)
-    HtmlBlock::Version.find(:all, &quot;html_block_id =&gt;#{@block.id}&quot;).size.should == 0
-  end    
 end
\ No newline at end of file</diff>
      <filename>spec/lib/acts/content_object_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,8 +5,8 @@ describe Connector do
   it &quot;should be able to find by block&quot; do
     foo = create_html_block(:name =&gt; &quot;foo&quot;)
     bar = create_html_block(:name =&gt; &quot;bar&quot;)
-    create_connector(:content_block =&gt; foo, :content_block_version =&gt; foo.version)
-    blocks = Connector.for_block(foo).map(&amp;:content_block)
+    create_connector(:connectable =&gt; foo, :connectable_version =&gt; foo.version)
+    blocks = Connector.for_connectable(foo).map(&amp;:connectable)
     blocks.should include(foo)
     blocks.should_not include(bar)
   end
@@ -15,22 +15,22 @@ describe Connector do
     @foo = create_html_block(:name =&gt; &quot;foo&quot;)
     @foo.update_attribute(:name, &quot;foo v2&quot;)
     @bar = create_html_block(:name =&gt; &quot;bar&quot;)
-    @con = create_connector(:content_block =&gt; @foo)
-    @con.update_attribute(:content_block_version, 99)
+    @con = create_connector(:connectable =&gt; @foo)
+    @con.update_attribute(:connectable_version, 99)
     reset(:con)
-    lambda { @con.content_block }.should raise_error(ActiveRecord::RecordNotFound)
+    lambda { @con.current_connectable }.should raise_error(ActiveRecord::RecordNotFound)
   end
   
   it &quot;should only find connectors for the current version of the page&quot; do
     @page = create_page(:section =&gt; root_section)
     @connector = create_connector(:page =&gt; @page)
     @page.update_attributes(:name =&gt; &quot;Updated&quot;)
-    @page.connectors.reload.size.should == 1
+    @page.reload.connectors.for_page_version(@page.version).count.should == 1
   end
 
   it &quot;should not delete blocks when deleting a connector&quot; do
     b = create_html_block
-    c = create_connector(:content_block =&gt; b)
+    c = create_connector(:connectable =&gt; b)
     lambda{ c.destroy }.should change(Connector, :count).by(-1)
     HtmlBlock.find(b).should_not be_nil
   end
@@ -42,16 +42,16 @@ describe Connector do
     three = create_connector(:page =&gt; page, :container =&gt; &quot;foo&quot;)
     
     two.reload.move_up
-    page.connectors.for_container(&quot;foo&quot;).map(&amp;:id).should == [two, one, three].map(&amp;:id)
+    page.reload.connectors.for_page_version(page.version).in_container(&quot;foo&quot;).all.map(&amp;:id).should == [two, one, three].map(&amp;:id)
     
     two.reload.move_down
-    page.connectors.for_container(&quot;foo&quot;).should == [one, two, three]    
+    page.reload.connectors.for_page_version(page.version).in_container(&quot;foo&quot;).all.should == [one, two, three]    
     
     three.reload.move_to_top
-    page.connectors.for_container(&quot;foo&quot;).should == [three, one, two]    
+    page.reload.connectors.for_page_version(page.version).in_container(&quot;foo&quot;).all.should == [three, one, two]    
     
     one.reload.move_to_bottom
-    page.connectors.for_container(&quot;foo&quot;).should == [three, two, one]    
+    page.reload.connectors.for_page_version(page.version).in_container(&quot;foo&quot;).all.should == [three, two, one]    
   end
 
 end</diff>
      <filename>spec/models/connector_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
 
 describe FileBlock do
-  
+
   describe &quot;when saving a new record&quot; do
     describe &quot;without a file&quot; do
       before do
@@ -78,14 +78,14 @@ describe FileBlock do
 
   describe &quot;when updating an existing record&quot; do
     before do
-      @file_block = create_file_block(:section =&gt; root_section, :attachment_file_name =&gt; &quot;/test.jpg&quot;, :attachment_file =&gt; mock_file(:read =&gt; &quot;original&quot;), :name =&gt; &quot;Test&quot;, :updated_by_user =&gt; admin_user, :publish_on_save =&gt; true)
+      @file_block = create_file_block(:section =&gt; root_section, :attachment_file_name =&gt; &quot;/test.jpg&quot;, :attachment_file =&gt; mock_file(:read =&gt; &quot;original&quot;), :name =&gt; &quot;Test&quot;, :publish_on_save =&gt; true)
       reset(:file_block)
       @attachment = @file_block.attachment
     end
     describe &quot;with changes to the attachment's file name&quot; do
       before do
         log FileBlock.to_table_without(:created_at, :updated_at)
-        @update_file_block = lambda { @file_block.update_attributes!(:updated_by_user =&gt; admin_user, :attachment_file_name =&gt; &quot;test_new.jpg&quot;, :attachment_file =&gt; nil, :publish_on_save =&gt; true) }        
+        @update_file_block = lambda { @file_block.update_attributes!(:attachment_file_name =&gt; &quot;test_new.jpg&quot;, :attachment_file =&gt; nil, :publish_on_save =&gt; true) }        
       end
       it &quot;should create a new attachment version&quot; do
         @update_file_block.should change(Attachment::Version, :count).by(1)
@@ -102,7 +102,7 @@ describe FileBlock do
     describe &quot;with changes to the attachment's section&quot; do
       before do
         @section = create_section(:parent =&gt; root_section, :name =&gt; &quot;New&quot;)
-        @updating_the_file_block = lambda { @file_block.update_attributes!(:section =&gt; @section, :updated_by_user =&gt; admin_user, :publish_on_save =&gt; true) }
+        @updating_the_file_block = lambda { @file_block.update_attributes!(:section =&gt; @section, :publish_on_save =&gt; true) }
       end
       it &quot;should not create a new attachment version&quot; do
         @updating_the_file_block.should_not change(Attachment::Version, :count)
@@ -125,7 +125,7 @@ describe FileBlock do
     end
     describe &quot;with changes to the attachment's file data&quot; do
       before do
-        @updating_the_file_block = lambda { @file_block.update_attributes!(:attachment_file =&gt; mock_file(:read =&gt; &quot;new&quot;), :updated_by_user =&gt; admin_user) }
+        @updating_the_file_block = lambda { @file_block.update_attributes!(:attachment_file =&gt; mock_file(:read =&gt; &quot;new&quot;)) }
       end
       it &quot;should not change the number of attachments&quot; do
         @updating_the_file_block.should_not change(Attachment, :count)
@@ -158,7 +158,7 @@ describe FileBlock do
     end
     describe &quot;with changes to the attachment's file data and publish on save&quot; do
       before do
-        @updating_the_file_block = lambda { @file_block.update_attributes!(:attachment_file =&gt; mock_file(:read =&gt; &quot;new&quot;), :updated_by_user =&gt; admin_user, :publish_on_save =&gt; true) }
+        @updating_the_file_block = lambda { @file_block.update_attributes!(:attachment_file =&gt; mock_file(:read =&gt; &quot;new&quot;), :publish_on_save =&gt; true) }
       end
       it &quot;should not change the number of attachments&quot; do
         @updating_the_file_block.should_not change(Attachment, :count)
@@ -191,7 +191,7 @@ describe FileBlock do
     end
     describe &quot;without changes to the attachment&quot; do
       before do
-        @updating_the_file_block = lambda { @file_block.update_attributes!(:name =&gt; &quot;Test 2&quot;, :updated_by_user =&gt; admin_user, :publish_on_save =&gt; true) }
+        @updating_the_file_block = lambda { @file_block.update_attributes!(:name =&gt; &quot;Test 2&quot;, :publish_on_save =&gt; true) }
       end
       it &quot;should not create a new attachment&quot; do
         @updating_the_file_block.should_not change(Attachment, :count)
@@ -213,8 +213,8 @@ describe FileBlock do
     before do
       @file1 = mock_file(:content_type =&gt; &quot;text/plain&quot;, :read =&gt; &quot;v1&quot;)      
       @file2 = mock_file(:content_type =&gt; &quot;text/plain&quot;, :read =&gt; &quot;v2&quot;)
-      @file_block = create_file_block(:attachment_file =&gt; @file1, :attachment_file_name =&gt; &quot;/test.txt&quot;, :section =&gt; root_section, :updated_by_user =&gt; admin_user)
-      @file_block.update_attributes(:attachment_file =&gt; @file2, :updated_by_user =&gt; admin_user)
+      @file_block = create_file_block(:attachment_file =&gt; @file1, :attachment_file_name =&gt; &quot;/test.txt&quot;, :section =&gt; root_section)
+      @file_block.update_attributes(:attachment_file =&gt; @file2)
       reset(:file_block)            
     end
     it &quot;should show the correct content&quot; do
@@ -224,8 +224,8 @@ describe FileBlock do
 
   describe &quot;when archiving a file block&quot; do
     before do
-      @file_block = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/test.txt&quot;, :section =&gt; root_section, :updated_by_user =&gt; admin_user)
-      @file_block.update_attributes(:archived =&gt; true, :updated_by_user =&gt; admin_user)
+      @file_block = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/test.txt&quot;, :section =&gt; root_section)
+      @file_block.update_attributes(:archived =&gt; true)
       reset(:file_block)
     end
     it &quot;should archive the attachment&quot; do
@@ -235,7 +235,7 @@ describe FileBlock do
 
   describe &quot;when deleting a file block&quot; do
     before do
-      @file_block = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/test.txt&quot;, :section =&gt; root_section, :updated_by_user =&gt; admin_user)
+      @file_block = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/test.txt&quot;, :section =&gt; root_section)
       @file_block.destroy      
     end
     it &quot;should delete the attachment&quot; do
@@ -245,11 +245,11 @@ describe FileBlock do
 
   describe do
     before do
-      @one = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/one.txt&quot;, :section =&gt; root_section, :updated_by_user =&gt; admin_user)
-      @two = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/two.txt&quot;, :section =&gt; root_section, :updated_by_user =&gt; admin_user)
+      @one = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/one.txt&quot;, :section =&gt; root_section)
+      @two = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/two.txt&quot;, :section =&gt; root_section)
       @section = create_section(:name =&gt; &quot;A&quot;)
-      @a1 = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/a/1.txt&quot;, :section =&gt; @section, :updated_by_user =&gt; admin_user)
-      @a2 = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/2.txt&quot;, :section =&gt; @section, :updated_by_user =&gt; admin_user)
+      @a1 = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/a/1.txt&quot;, :section =&gt; @section)
+      @a2 = create_file_block(:attachment_file =&gt; mock_file, :attachment_file_name =&gt; &quot;/2.txt&quot;, :section =&gt; @section)
       reset(:one, :two, :a1, :a2)
     end
     it &quot;should be able to find file blocks in the root section&quot; do</diff>
      <filename>spec/models/file_block_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,7 @@ describe HtmlBlock do
   describe &quot;versioning for blocks&quot; do
     it &quot;should support versioning&quot; do
       h = HtmlBlock.new
-      h.versionable?.should be_true
+      h.class.should be_versioned
     end
 
     describe &quot;when creating a record&quot; do
@@ -30,7 +30,7 @@ describe HtmlBlock do
         @html_block = create_html_block
       end
       it &quot;should create a version when creating a html_block&quot; do
-        @html_block.versions.latest.html_block.should == @html_block
+        @html_block.versions.last.html_block.should == @html_block
       end
     end
     
@@ -41,8 +41,8 @@ describe HtmlBlock do
           @html_block.update_attributes(:name =&gt; &quot;Something Different&quot;)
         end
         it &quot;should create a version with the changed values&quot; do
-          @html_block.versions.latest.html_block.should == @html_block
-          @html_block.versions.latest.name.should == &quot;Something Different&quot;
+          @html_block.versions.last.html_block.should == @html_block
+          @html_block.versions.last.name.should == &quot;Something Different&quot;
           @html_block.name.should == &quot;Something Different&quot;
         end
         it &quot;should not affect the values in previous versions&quot; do
@@ -63,7 +63,7 @@ describe HtmlBlock do
     describe &quot;when deleting a record&quot; do
       before do
         @html_block = create_html_block
-        @delete_html_block = lambda { @html_block.mark_as_deleted!(create_user) }
+        @delete_html_block = lambda { @html_block.mark_as_deleted! }
       end
       
       it &quot;should not actually delete the row&quot; do
@@ -84,22 +84,22 @@ describe HtmlBlock do
         @v1_created_at = Time.zone.now - 5.days
         @html_block.created_at = @v1_created_at
         @html_block.save
-        v1 = @html_block.versions.latest
+        v1 = @html_block.versions.last
         v1.created_at = @v1_created_at
         v1.save
         @html_block.update_attributes(:name =&gt; &quot;Version Two&quot;)
-        @v2_created_at = @html_block.versions.latest.created_at
+        @v2_created_at = @html_block.versions.last.created_at
       end
       it &quot;should be able to revert&quot; do
         @html_block.name.should == &quot;Version Two&quot;
-        @html_block.revert_to 1, create_user
+        @html_block.revert_to 1
         @html_block.reload.version.should == 3
         @html_block.name.should == &quot;Version One&quot; 
       end
       it &quot;should keep the original created at time&quot; do        
         @html_block.find_version(1).created_at.to_i.should == @v1_created_at.to_i
         @html_block.find_version(2).created_at.to_i.should == @v2_created_at.to_i
-        @html_block.revert_to 1, create_user
+        @html_block.revert_to 1
         @html_block.reload
         @html_block.find_version(1).created_at.to_i.should == @v1_created_at.to_i
         @html_block.find_version(2).created_at.to_i.should == @v2_created_at.to_i
@@ -108,7 +108,7 @@ describe HtmlBlock do
       end
       describe &quot;without specifying a version number&quot; do
         before do
-          @action = lambda { @html_block.revert_to nil, create_user }
+          @action = lambda { @html_block.revert_to nil }
         end
         it &quot;should raise 'Version parameter missing'&quot; do
           @action.should raise_error(&quot;Version parameter missing&quot;)
@@ -125,7 +125,7 @@ describe HtmlBlock do
       end
       describe &quot;with an invalid version number&quot; do
         before do
-          @action = lambda { @html_block.revert_to 99, create_user }
+          @action = lambda { @html_block.revert_to 99 }
         end
         it &quot;should raise 'Could not find version 99'&quot; do
           @action.should raise_error(&quot;Could not find version 99&quot;)</diff>
      <filename>spec/models/html_block_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@ describe Link do
   describe &quot;versioning for links&quot; do
     it &quot;should support versioning&quot; do
       h = Link.new
-      h.versionable?.should be_true
+      h.class.should be_versioned
     end
 
     describe &quot;when creating a record&quot; do
@@ -23,7 +23,7 @@ describe Link do
         @link = create_link
       end
       it &quot;should create a version when creating a link&quot; do
-        @link.versions.latest.link.should == @link
+        @link.versions.last.link.should == @link
       end
     end
 
@@ -34,8 +34,8 @@ describe Link do
           @link.update_attributes(:name =&gt; &quot;Something Different&quot;)
         end
         it &quot;should create a version with the changed values&quot; do
-          @link.versions.latest.link.should == @link
-          @link.versions.latest.name.should == &quot;Something Different&quot;
+          @link.versions.last.link.should == @link
+          @link.versions.last.name.should == &quot;Something Different&quot;
           @link.name.should == &quot;Something Different&quot;
         end
         it &quot;should not affect the values in previous versions&quot; do
@@ -56,7 +56,7 @@ describe Link do
     describe &quot;when deleting a record&quot; do
       before do
         @link = create_link
-        @delete_link = lambda { @link.mark_as_deleted!(create_user) }
+        @delete_link = lambda { @link.mark_as_deleted! }
       end
       
       it &quot;should not actually delete the row&quot; do</diff>
      <filename>spec/models/link_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,26 +7,6 @@ describe Page do
     page.should_not be_valid
     page.should have(1).error_on(:path)
   end
-  
-  it &quot;should require an updated_by_user on create&quot; do
-    page = new_page(:path =&gt; &quot;test&quot;, :section =&gt; root_section, :updated_by_user =&gt; nil)    
-    page.should_not be_valid
-    page.should have(1).error_on(:updated_by_id)
-  end
-  
-  it &quot;should require an updated_by_user on update&quot; do
-    page = create_page(:path =&gt; &quot;test&quot;, :section =&gt; root_section)
-    page = Page.find(page.id)
-    page.should_not be_valid
-    page.should have(1).error_on(:updated_by_id)
-  end
-
-  it &quot;should be valid if an updated_by_user is specified&quot; do
-    page = create_page(:path =&gt; &quot;test&quot;, :section =&gt; root_section)
-    page = Page.find(page.id)
-    page.updated_by_user = User.first
-    page.should be_valid
-  end
 
   describe &quot;.find_by_path&quot; do
     it &quot;should be able to find the home page&quot; do
@@ -44,7 +24,7 @@ describe Page do
       create_page(:name =&gt; &quot;Deleted Me&quot;, :path =&gt; &quot;/test&quot;, :section =&gt; root_section).destroy
       @page = create_page(:name =&gt; &quot;v1&quot;, :path =&gt; &quot;/test&quot;, :section =&gt; root_section, :publish_on_save =&gt; true)
       @page = Page.find(@page.id)
-      @page.update_attributes!(:name =&gt; &quot;v2&quot;, :updated_by_user =&gt; create_user)
+      @page.update_attributes!(:name =&gt; &quot;v2&quot;)
     end
     it &quot;should return the latest version of the page&quot; do
       Page.find_live_by_path(&quot;/test&quot;).name.should == &quot;v1&quot;
@@ -73,77 +53,78 @@ describe Page do
   describe &quot;revision comment&quot; do
     before { @page = create_page(:section =&gt; root_section, :name =&gt; &quot;V1&quot;) }
     it &quot;should be set to 'Created' when the page is created&quot; do
-      @page.revision_comment.should == 'Created'
+      @page.current_version.version_comment.should == 'Created'
     end
     it &quot;should not be changed if the object is not changed&quot; do
       @page.reload.save
-      @page.reload.revision_comment.should == 'Created'
-      @page.as_of_version(@page.version).revision_comment.should == 'Created'
+      @page.reload.current_version.version_comment.should == 'Created'
+      @page.as_of_version(@page.version).current_version.version_comment.should == 'Created'
     end
     it &quot;should be set to 'Name edited' when the name is changed&quot; do
       @page.update_attributes(:name =&gt; &quot;V2&quot;)
-      @page.revision_comment.should == 'Name edited'
-      @page.as_of_version(@page.version).revision_comment.should == 'Name edited'
+      @page.current_version.version_comment.should == 'Changed name'
+      @page.as_of_version(@page.version).current_version.version_comment.should == 'Changed name'
     end
     it &quot;should be set to 'Html 'Hello, World!' was added to the 'main' container'&quot; do
       @block = create_html_block(:name =&gt; &quot;Hello, World!&quot;)
-      @page.add_content_block!(@block, &quot;main&quot;)
-      @page.revision_comment.should == &quot;Text 'Hello, World!' was added to the 'main' container&quot;
-      @page.as_of_version(@page.version).revision_comment.should == &quot;Text 'Hello, World!' was added to the 'main' container&quot;
+      @page.create_connector(@block, &quot;main&quot;)
+      @page.current_version.version_comment.should == &quot;Html Block 'Hello, World!' was added to the 'main' container&quot;
+      @page.as_of_version(@page.version).current_version.version_comment.should == &quot;Html Block 'Hello, World!' was added to the 'main' container&quot;
     end
     it &quot;should be set to 'HtmlBlock 'Hello, World!' was moved up within the 'main' container'&quot; do
       @block = create_html_block(:name =&gt; &quot;Hello, World!&quot;)
-      @page.add_content_block!(create_html_block(:name =&gt; &quot;Whatever&quot;), &quot;main&quot;)
-      @page.add_content_block!(@block, &quot;main&quot;)
-      @page.move_connector_up(Connector.first(:conditions =&gt; {:content_block_id =&gt; @block.id}))
-      @page.revision_comment.should == &quot;Text 'Hello, World!' was moved up within the 'main' container&quot;
-      @page.as_of_version(@page.version).revision_comment.should == @page.revision_comment
+      @page.create_connector(create_html_block(:name =&gt; &quot;Whatever&quot;), &quot;main&quot;)
+      @page.create_connector(@block, &quot;main&quot;)
+      @page.move_connector_up(Connector.for_connectable(@block).first)
+      @page.current_version.version_comment.should == &quot;Html Block 'Hello, World!' was moved up within the 'main' container&quot;
+      @page.as_of_version(@page.version).current_version.version_comment.should == @page.current_version.version_comment
     end
     it &quot;should be set to 'HtmlBlock 'Hello, World!' was moved down within the 'main' container'&quot; do
       @block = create_html_block(:name =&gt; &quot;Hello, World!&quot;)
-      @page.add_content_block!(@block, &quot;main&quot;)
-      @page.add_content_block!(create_html_block(:name =&gt; &quot;Whatever&quot;), &quot;main&quot;)
-      @page.move_connector_down(Connector.first(:conditions =&gt; {:content_block_id =&gt; @block.id}))
-      @page.revision_comment.should == &quot;Text 'Hello, World!' was moved down within the 'main' container&quot;
-      @page.as_of_version(@page.version).revision_comment.should == @page.revision_comment
+      @page.create_connector(@block, &quot;main&quot;)
+      @page.create_connector(create_html_block(:name =&gt; &quot;Whatever&quot;), &quot;main&quot;)
+      @page.move_connector_down(Connector.for_connectable(@block).first)
+      @page.current_version.version_comment.should == &quot;Html Block 'Hello, World!' was moved down within the 'main' container&quot;
+      @page.as_of_version(@page.version).current_version.version_comment.should == @page.current_version.version_comment
     end
     it &quot;should be set to 'Html 'Hello, World!' was removed from the 'main' container'&quot; do
       @block = create_html_block(:name =&gt; &quot;Hello, World!&quot;)      
-      @page.destroy_connector(@page.add_content_block!(@block, &quot;main&quot;))
-      @page.revision_comment.should == &quot;Text 'Hello, World!' was removed from the 'main' container&quot;
-      @page.as_of_version(@page.version).revision_comment.should == &quot;Text 'Hello, World!' was removed from the 'main' container&quot;
+      @page.remove_connector(@page.create_connector(@block, &quot;main&quot;))
+      @page.current_version.version_comment.should == &quot;Html Block 'Hello, World!' was removed from the 'main' container&quot;
+      @page.as_of_version(@page.version).current_version.version_comment.should == &quot;Html Block 'Hello, World!' was removed from the 'main' container&quot;
     end
     it &quot;should be set to 'Reverted to version 1'&quot; do
       @page.update_attribute(:name, &quot;V2&quot;)
-      @page.revert_to(1, create_user)
-      @page.revision_comment.should == &quot;Reverted to version 1&quot;
-      @page.as_of_version(@page.version).revision_comment.should == &quot;Reverted to version 1&quot;
+      @page.revert_to(1)
+      @page.reload.current_version.version_comment.should == &quot;Reverted to version 1&quot;
+      @page.as_of_version(1).current_version.version_comment.should == &quot;Created&quot;
+      @page.as_of_version(2).current_version.version_comment.should == &quot;Changed name&quot;
+      @page.as_of_version(3).current_version.version_comment.should == &quot;Reverted to version 1&quot;
     end    
   end
 
   describe &quot;status&quot; do
-    it &quot;should be in progress when it is created&quot; do
+    it &quot;should not be published when it is created&quot; do
       page = create_page
-      page.should be_in_progress
       page.should_not be_published
     end
 
     it &quot;should be able to be published when creating&quot; do
       page = new_page
-      page.publish(create_user).should be_true
+      page.publish.should be_true
       page.should be_published
     end
 
     it &quot;should be able to be hidden&quot; do
       page = create_page
-      page.hide!(create_user)
+      page.hide!
       page.should be_hidden
     end
 
     it &quot;should be able to be published&quot; do
       page = create_page(:section =&gt; root_section)
       page = Page.find(page.id)
-      page.publish(create_user).should be_true  
+      page.publish.should be_true  
       page.reload.should be_published
     end
   end
@@ -151,14 +132,14 @@ describe Page do
   describe &quot;#container_live?&quot; do
     it &quot;should be true if all blocks are published&quot; do
       page = create_page(:section =&gt; root_section)
-      page.add_content_block!(create_html_block(:publish_on_save =&gt; true), &quot;main&quot;)
-      page.add_content_block!(create_html_block(:publish_on_save =&gt; true), &quot;main&quot;)
+      page.create_connector(create_html_block(:publish_on_save =&gt; true), &quot;main&quot;)
+      page.create_connector(create_html_block(:publish_on_save =&gt; true), &quot;main&quot;)
       page.container_published?(&quot;main&quot;).should be_true
     end
     it &quot;should be false if there are any non-published blocks&quot; do
       page = create_page(:section =&gt; root_section)
-      page.add_content_block!(create_html_block(:publish_on_save =&gt; true), &quot;main&quot;)
-      page.add_content_block!(create_html_block, &quot;main&quot;)
+      page.create_connector(create_html_block(:publish_on_save =&gt; true), &quot;main&quot;)
+      page.create_connector(create_html_block, &quot;main&quot;)
       page.container_published?(&quot;main&quot;).should be_false
     end  
   end
@@ -181,7 +162,7 @@ describe Page do
         @page = create_page
       end
       it &quot;should create a version when creating a page&quot; do
-        @page.versions.latest.page.should == @page
+        @page.current_version.page.should == @page
       end
     end
 
@@ -189,14 +170,19 @@ describe Page do
       describe &quot;with different values&quot; do
         before do
           @first_guy = create_user(:login =&gt; &quot;first_guy&quot;)
-          @page = create_page(:name =&gt; &quot;Original Value&quot;, :updated_by_user =&gt; @first_guy)
+          User.current = @first_guy
+          @page = create_page(:name =&gt; &quot;Original Value&quot;)
           @page = Page.find(@page.id)
           @new_guy = create_user(:login =&gt; &quot;new_guy&quot;)
-          @page.update_attributes(:name =&gt; &quot;Something Different&quot;, :updated_by_user =&gt; @new_guy)
+          User.current = @new_guy
+          @page.update_attributes(:name =&gt; &quot;Something Different&quot;)
+        end
+        after do
+          User.current = nil
         end
         it &quot;should create a version with the changed values&quot; do
-          @page.versions.latest.page.should == @page
-          @page.versions.latest.name.should == &quot;Something Different&quot;
+          @page.current_version.page.should == @page
+          @page.current_version.name.should == &quot;Something Different&quot;
           @page.name.should == &quot;Something Different&quot;
         end
         it &quot;should not affect the values in previous versions&quot; do
@@ -228,6 +214,7 @@ describe Page do
       it &quot;should not actually delete the row&quot; do
         @delete_page.should_not change(Page, :count_with_deleted)
       end
+
       it &quot;should create a new version&quot; do
         @delete_page.should change(@page.versions, :count).by(1)
       end
@@ -253,35 +240,16 @@ describe Page do
 
       it &quot;should not remove all versions as well when doing a destroy&quot; do
         @page.destroy
-        Page::Version.find(:all, &quot;page_id =&gt;#{@page.id}&quot;).size.should == 2
+        Page::Version.count(:conditions =&gt; {:page_id =&gt; @page.id }).should == 2
       end
 
-      it &quot;should remove all versions when doing destroy!&quot; do
-        @page.destroy!
-        lambda { Page.find_with_deleted(@page) }.should raise_error(ActiveRecord::RecordNotFound)
-        Page::Version.find(:all, &quot;page_id =&gt;#{@page.id}&quot;).size.should == 0
-      end
     end
     
-    describe &quot;#create_new_version!&quot; do
-      before do
-        @page = create_page(:section =&gt; root_section)
-        @increment_version = lambda { @page.create_new_version! }
-      end
-      it &quot;should increase the version number&quot; do
-        @increment_version.call
-        @page.reload.version.should == 2
-      end
-      it &quot;should create a new version&quot; do
-        @increment_version.should change(Page::Version, :count).by(1)
-      end
-    end 
-    
     describe &quot;reverting&quot; do
       before do
         @page = create_page(:section =&gt; root_section, :name =&gt; &quot;V1&quot;)
         @page.update_attribute(:name, &quot;V2&quot;)
-        @revert_the_page = lambda { @page.revert_to(1, create_user)}
+        @revert_the_page = lambda { @page.revert_to(1)}
       end
       it &quot;should change the version by 1&quot; do
         @revert_the_page.should change(@page, :version).by(1)
@@ -298,8 +266,8 @@ describe &quot;A page with associated blocks&quot; do
   before do
     @page = create_page(:section =&gt; root_section, :name =&gt; &quot;Bar&quot;)
     @block = create_html_block
-    @other_connector = create_connector(:page =&gt; create_page(:section =&gt; root_section), :content_block =&gt; @block)
-    @page_connector = create_connector(:page =&gt; @page, :content_block =&gt; @block)          
+    @other_connector = create_connector(:page =&gt; create_page(:section =&gt; root_section), :page_version =&gt; 1, :connectable =&gt; @block, :connectable_version =&gt; @block.version)
+    @page_connector = create_connector(:page =&gt; @page, :page_version =&gt; @page.version, :connectable =&gt; @block, :connectable_version =&gt; @block.version)          
     @destroying_the_page = lambda { @page.destroy }
   end
   describe &quot;when updating&quot; do
@@ -351,34 +319,36 @@ describe &quot;A page that had 2 blocks added to it&quot; do
     @page = create_page(:section =&gt; root_section)
     @foo_block = create_html_block(:name =&gt; &quot;Foo Block&quot;)
     @bar_block = create_html_block(:name =&gt; &quot;Bar Block&quot;)
-    @page.add_content_block!(@foo_block, &quot;whatever&quot;)
+    @page.create_connector(@foo_block, &quot;whatever&quot;)
     @page.reload
-    @page.add_content_block!(@bar_block, &quot;whatever&quot;)
+    @page.create_connector(@bar_block, &quot;whatever&quot;)
     @page.reload
   end
   describe &quot;and then had then removed,&quot; do
     before do
-      @page.destroy_connector(@page.connectors.reload.first(:order =&gt; &quot;connectors.position&quot;))
-      @page.destroy_connector(@page.connectors.reload.first(:order =&gt; &quot;connectors.position&quot;))      
+      @page.remove_connector(@page.reload.connectors.for_page_version(@page.version).first(:order =&gt; &quot;connectors.position&quot;))
+      @page.remove_connector(@page.reload.connectors.for_page_version(@page.version).first(:order =&gt; &quot;connectors.position&quot;))      
     end
     describe &quot;when reverting to the previous version,&quot; do
       before do
-        @reverting_to_the_previous_version = lambda { @page.revert(create_user) }
+        @reverting_to_the_previous_version = lambda { 
+          @page.reload.revert 
+        }
       end
       it &quot;should restore the connectors from the version being reverted to&quot; do
         @reverting_to_the_previous_version.should change(Connector, :count).by(1)
-        @page.connectors.reload.first.should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :content_block =&gt; @bar_block, :content_block_version =&gt; 1, :container =&gt; &quot;whatever&quot;)
+        @page.reload.connectors.for_page_version(@page.version).first.should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :connectable =&gt; @bar_block, :connectable_version =&gt; 1, :container =&gt; &quot;whatever&quot;)
       end
     end
     describe &quot;when reverting to the version that had both connectors,&quot; do
       before do
-        @reverting_to_the_previous_version = lambda { @page.revert_to(3, create_user) }
+        @reverting_to_the_previous_version = lambda { @page.revert_to(3) }
       end
       it &quot;should restore the connectors from version 3&quot; do
         @reverting_to_the_previous_version.should change(Connector, :count).by(2)
-        foo, bar = @page.connectors.reload.find(:all, :order =&gt; &quot;connectors.position&quot;)
-        foo.should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :content_block =&gt; @foo_block, :content_block_version =&gt; 1, :container =&gt; &quot;whatever&quot;)
-        bar.should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :content_block =&gt; @bar_block, :content_block_version =&gt; 1, :container =&gt; &quot;whatever&quot;)
+        foo, bar = @page.reload.connectors.for_page_version(@page.version).find(:all, :order =&gt; &quot;connectors.position&quot;)
+        foo.should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :connectable =&gt; @foo_block, :connectable_version =&gt; 1, :container =&gt; &quot;whatever&quot;)
+        bar.should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :connectable =&gt; @bar_block, :connectable_version =&gt; 1, :container =&gt; &quot;whatever&quot;)
       end
     end
   end
@@ -389,7 +359,19 @@ describe &quot;A page that had 2 blocks added to it&quot; do
     end
     describe &quot;when reverting to a version of the page from before the update to the block,&quot; do
       before do
-        @reverting_the_page = lambda { @page.revert_to(3, create_user) }
+        @reverting_the_page = lambda {
+          # log Page.to_table_without_stamps(:description, :language, :keywords, :cacheable, :template_id, :hidden)
+          # log Page::Version.to_table_without_stamps(:description, :language, :keywords, :cacheable, :template_id, :hidden, :version_comment)          
+          # log Connector.to_table_without_stamps(:container, :position)      
+          # log HtmlBlock.to_table_without_stamps(:content)
+          # log HtmlBlock::Version.to_table_without_stamps(:content)                    
+          @page.revert_to(3)
+          # log Page.to_table_without_stamps(:description, :language, :keywords, :cacheable, :template_id, :hidden)
+          # log Page::Version.to_table_without_stamps(:description, :language, :keywords, :cacheable, :template_id, :hidden, :version_comment)          
+          # log Connector.to_table_without_stamps(:container, :position)      
+          # log HtmlBlock.to_table_without_stamps(:content)
+          # log HtmlBlock::Version.to_table_without_stamps(:content)
+        }
       end
       it &quot;should change the block version from 2 to 3&quot; do
         @foo_block.version.should == 2
@@ -398,12 +380,10 @@ describe &quot;A page that had 2 blocks added to it&quot; do
       end
       it &quot;should return the block to the state as of the original version&quot; do
         @reverting_the_page.call
-        @page.connectors.reload.first.content_block.name.should == &quot;Foo Block&quot;
+        @page.connectors.for_page_version(@page.version).reload.first.connectable.name.should == &quot;Foo Block&quot;
       end
-      it &quot;should change the the page version from 4 to 5&quot; do
-        @page.version.should == 4
-        @reverting_the_page.call
-        @page.version.should == 5
+      it &quot;should change the the page version by 1&quot; do
+        @reverting_the_page.should change(@page, :version).by(1)
       end
     end
   end
@@ -413,7 +393,7 @@ describe &quot;Adding a block to a page&quot; do
   before do
     @page = create_page(:section =&gt; root_section)
     @block = create_html_block()
-    @adding_block = lambda { @conn = @page.add_content_block!(@block, &quot;testing&quot;) }
+    @adding_block = lambda { @conn = @page.create_connector(@block, &quot;testing&quot;) }
   end
   it &quot;should set the page version to new page version&quot; do
     @adding_block.call
@@ -421,7 +401,7 @@ describe &quot;Adding a block to a page&quot; do
   end
   it &quot;should set the content block version to existing block version&quot; do
     @adding_block.call
-    @conn.content_block_version.should == 1
+    @conn.connectable_version.should == 1
   end
   it &quot;should increment the page version by 1&quot; do
     @adding_block.should change(@page, :version).by(1)
@@ -430,9 +410,9 @@ describe &quot;Adding a block to a page&quot; do
     @adding_block.should change(Connector, :count).by(1)
   end
   it &quot;should make the page be draft&quot; do
-    @page.publish(create_user)
+    @page.publish
     @adding_block.call
-    @page.should be_draft
+    @page.should_not be_published
   end
 end
 
@@ -441,9 +421,9 @@ describe &quot;Adding a second block to a page&quot; do
     @page = create_page(:section =&gt; root_section)
     @block = create_html_block()
     @block2 = create_html_block()
-    @first_conn = @page.add_content_block!(@block, &quot;testing&quot;)
+    @first_conn = @page.create_connector(@block, &quot;testing&quot;)
     @adding_block = lambda do
-      @conn = @page.add_content_block!(@block2, &quot;testing&quot;)      
+      @conn = @page.create_connector(@block2, &quot;testing&quot;)      
     end
   end
   it &quot;should set the page version to new page version&quot; do
@@ -452,14 +432,14 @@ describe &quot;Adding a second block to a page&quot; do
   end
   it &quot;should set the content block version to existing block version&quot; do
     @adding_block.call
-    @conn.content_block_version.should == 1
+    @conn.connectable_version.should == 1
   end
   it &quot;should increment the page version by 1&quot; do
     @adding_block.should change(@page, :version).by(1)
   end    
   it &quot;should add 2 new connectors to the page&quot; do
     @adding_block.call 
-    @page.connectors.count.should == 2
+    @page.connectors.for_page_version(@page.version).count.should == 2
   end
   it &quot;should create 2 new connectors&quot; do
     @adding_block.should change(Connector, :count).by(2)
@@ -467,24 +447,24 @@ describe &quot;Adding a second block to a page&quot; do
   it &quot;should leave the connector for the first block untouched&quot; do
     @adding_block.call
     @first_conn.reload
-    @first_conn.content_block.should == @block
+    @first_conn.connectable.should == @block
     @first_conn.page.should == @page
     @first_conn.page_version.should == 2
-    @first_conn.content_block_version.should == 1
+    @first_conn.connectable_version.should == 1
   end
   it &quot;should correctly wire up the 2 new connectors&quot; do
     @adding_block.call
     @conns = Connector.all(:conditions =&gt; {:page_version =&gt; 3}, :order =&gt; &quot;id&quot;)
     @conns.size.should == 2
-    @conns[0].content_block.should == @block
+    @conns[0].connectable.should == @block
     @conns[0].page.should == @page
     @conns[0].page_version.should == 3
-    @conns[0].content_block_version.should == 1
+    @conns[0].connectable_version.should == 1
     
-    @conns[1].content_block.should == @block2
+    @conns[1].connectable.should == @block2
     @conns[1].page.should == @page
     @conns[1].page_version.should == 3
-    @conns[1].content_block_version.should == 1
+    @conns[1].connectable_version.should == 1
   end
 end
 
@@ -493,10 +473,10 @@ describe &quot;Adding a third block to a page&quot; do
     @page = create_page(:section =&gt; root_section)
     @block = create_html_block()
     @block2 = create_html_block()
-    @first_conn = @page.add_content_block!(@block, &quot;testing&quot;)
-    @second_conn = @page.add_content_block!(@block2, &quot;testing&quot;)
+    @first_conn = @page.create_connector(@block, &quot;testing&quot;)
+    @second_conn = @page.create_connector(@block2, &quot;testing&quot;)
     @adding_block = lambda do
-      @conn = @page.add_content_block!(@block2, &quot;testing&quot;)
+      @conn = @page.create_connector(@block2, &quot;testing&quot;)
     end
   end
   it &quot;should set the page version to 4&quot; do
@@ -509,14 +489,14 @@ describe &quot;Adding a third block to a page&quot; do
   end
   it &quot;should set the content block version to existing block version&quot; do
     @adding_block.call
-    @conn.content_block_version.should == 1
+    @conn.connectable_version.should == 1
   end
   it &quot;should increment the page version by 1&quot; do
     @adding_block.should change(@page, :version).by(1)
   end    
   it &quot;should add 3 new connectors to the page&quot; do
     @adding_block.call 
-    @page.connectors.count.should == 3
+    @page.connectors.for_page_version(@page.version).count.should == 3
   end
   it &quot;should create 3 new connectors&quot; do
     @adding_block.should change(Connector, :count).by(3)
@@ -526,39 +506,39 @@ describe &quot;Adding a third block to a page&quot; do
     @conns = Connector.all(:conditions =&gt; [&quot;page_version &lt; 4&quot;], :order =&gt; &quot;id&quot;)
     @conns.size.should == 3
 
-    @conns[0].content_block.should == @block
+    @conns[0].connectable.should == @block
     @conns[0].page.should == @page
     @conns[0].page_version.should == 2
-    @conns[0].content_block_version.should == 1
+    @conns[0].connectable_version.should == 1
         
-    @conns[1].content_block.should == @block
+    @conns[1].connectable.should == @block
     @conns[1].page.should == @page
     @conns[1].page_version.should == 3
-    @conns[1].content_block_version.should == 1
+    @conns[1].connectable_version.should == 1
     
-    @conns[2].content_block.should == @block2
+    @conns[2].connectable.should == @block2
     @conns[2].page.should == @page
     @conns[2].page_version.should == 3
-    @conns[2].content_block_version.should == 1    
+    @conns[2].connectable_version.should == 1    
   end
   it &quot;should correctly wire up the 3 new connectors&quot; do
     @adding_block.call
     @conns = Connector.all(:conditions =&gt; {:page_version =&gt; 4}, :order =&gt; &quot;id&quot;)
     @conns.size.should == 3
-    @conns[0].content_block.should == @block
+    @conns[0].connectable.should == @block
     @conns[0].page.should == @page
     @conns[0].page_version.should == 4
-    @conns[0].content_block_version.should == 1
+    @conns[0].connectable_version.should == 1
 
-    @conns[1].content_block.should == @block2
+    @conns[1].connectable.should == @block2
     @conns[1].page.should == @page
     @conns[1].page_version.should == 4
-    @conns[1].content_block_version.should == 1
+    @conns[1].connectable_version.should == 1
     
-    @conns[2].content_block.should == @block2
+    @conns[2].connectable.should == @block2
     @conns[2].page.should == @page
     @conns[2].page_version.should == 4
-    @conns[2].content_block_version.should == 1
+    @conns[2].connectable_version.should == 1
   end
 end
 
@@ -566,43 +546,40 @@ describe &quot;Removing a connector from a page&quot; do
   before do
     @page = create_page(:section =&gt; root_section)
     @block = create_html_block()
-    @conn = @page.add_content_block!(@block, &quot;testing&quot;) 
-    @destroy_connector = lambda { @page.destroy_connector(@conn) } 
+    @conn = @page.create_connector(@block, &quot;testing&quot;) 
+    @remove_connector = lambda { @page.remove_connector(@conn) } 
   end
   
   it &quot;should create a new version the page&quot; do
-    @destroy_connector.should change(Page::Version, :count).by(1)
+    @remove_connector.should change(Page::Version, :count).by(1)
   end
   
   it &quot;should should increment the page version by 1&quot; do
-    @destroy_connector.should change(@page, :version).by(1)
+    @remove_connector.should change(@page, :version).by(1)
   end
   
   it &quot;should not alter the original connector&quot; do
-    @destroy_connector.call
+    @remove_connector.call
     conns = Connector.find(:all)
     conns.size.should == 1
     
     conns[0].page.should == @page
     conns[0].page_version.should == 2
-    conns[0].content_block.should == @block
-    conns[0].content_block_version.should == 1
+    conns[0].connectable.should == @block
+    conns[0].connectable_version.should == 1
     
   end
   it &quot;should destroy the connector&quot; do
-    @destroy_connector.call
-    @page.reload.connectors.should be_empty
+    @remove_connector.call
+    @page.reload.connectors.for_page_version(@page.version).should be_empty
   end
   
-  it &quot;should return the frozen connector&quot; do
-    c = @destroy_connector.call
-    c.should be_frozen
-    c.should == @conn
-  end
-  it &quot;should mark the page as draft&quot; do
-    @page.publish!(create_user)
-    @destroy_connector.call
-    @page.should be_draft
+  it &quot;should mark the page as not published&quot; do
+    @page.reload.publish!
+    @conn.connectable_version += 1
+    con = @page.connectors.for_page_version(@page.version).like(@conn).first
+    @page.remove_connector(con)
+    @page.should_not be_published
   end
 end
 
@@ -611,51 +588,51 @@ describe &quot;Removing multiple blocks from a page&quot; do
     @page = create_page(:section =&gt; root_section)
     @block1 = create_html_block()
     @block2 = create_html_block()
-    @conn = @page.add_content_block!(@block1, &quot;bar&quot;) 
-    @conn2 = @page.add_content_block!(@block2, &quot;bar&quot;)
-    @conn3 = @page.add_content_block!(@block2, &quot;foo&quot;)
+    @conn = @page.create_connector(@block1, &quot;bar&quot;) 
+    @conn2 = @page.create_connector(@block2, &quot;bar&quot;)
+    @conn3 = @page.create_connector(@block2, &quot;foo&quot;)
     #Need to get the new connector that matches @conn2, otherwise you will delete an older version, not the latest connector
-    @conn2 = Connector.first(:conditions =&gt; {:page_id =&gt; @page.reload.id, :page_version =&gt; @page.version, :content_block_id =&gt; @block2.id, :content_block_version =&gt; @block2.version, :container =&gt; &quot;bar&quot;})
-    @page.destroy_connector(@conn2)
-    @destroy_connector = lambda { 
-      @conn = Connector.first(:conditions =&gt; {:page_id =&gt; @page.reload.id, :page_version =&gt; @page.version, :content_block_id =&gt; @block2.id, :content_block_version =&gt; @block2.version, :container =&gt; &quot;foo&quot;})
-      @page.destroy_connector(@conn) 
+    @conn2 = Connector.first(:conditions =&gt; {:page_id =&gt; @page.reload.id, :page_version =&gt; @page.version, :connectable_id =&gt; @block2.id, :connectable_version =&gt; @block2.version, :container =&gt; &quot;bar&quot;})
+    @page.remove_connector(@conn2)
+    @remove_connector = lambda { 
+      @conn = Connector.first(:conditions =&gt; {:page_id =&gt; @page.reload.id, :page_version =&gt; @page.version, :connectable_id =&gt; @block2.id, :connectable_version =&gt; @block2.version, :container =&gt; &quot;foo&quot;})
+      @page.remove_connector(@conn) 
     } 
   end
   
   it &quot;should create a new version the page&quot; do
-    @destroy_connector.should change(Page::Version, :count).by(1)
+    @remove_connector.should change(Page::Version, :count).by(1)
   end
   
   it &quot;should have 5 total versions&quot; do
-    @destroy_connector.call
+    @remove_connector.call
     Page::Version.count.should == 6
   end
   it &quot;should should increment the page version by 1&quot; do
-    @destroy_connector.should change(@page, :version).by(1)
+    @remove_connector.should change(@page, :version).by(1)
   end
   
   it &quot;should end up with the correct connectors&quot; do
     
-    @destroy_connector.call
-    conns = Connector.find(:all, :order =&gt; &quot;page_version, content_block_id, container&quot;)
+    @remove_connector.call
+    conns = Connector.find(:all, :order =&gt; &quot;page_version, connectable_id, container&quot;)
     
     conns.size.should == 9
     
-    conns[0].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 2, :content_block =&gt; @block1, :content_block_version =&gt; 1, :container =&gt; &quot;bar&quot;)
-    conns[1].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 3, :content_block =&gt; @block1, :content_block_version =&gt; 1, :container =&gt; &quot;bar&quot;)
-    conns[2].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 3, :content_block =&gt; @block2, :content_block_version =&gt; 1, :container =&gt; &quot;bar&quot;)
-    conns[3].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 4, :content_block =&gt; @block1, :content_block_version =&gt; 1, :container =&gt; &quot;bar&quot;)
-    conns[4].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 4, :content_block =&gt; @block2, :content_block_version =&gt; 1, :container =&gt; &quot;bar&quot;)
-    conns[5].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 4, :content_block =&gt; @block2, :content_block_version =&gt; 1, :container =&gt; &quot;foo&quot;)
-    conns[6].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 5, :content_block =&gt; @block1, :content_block_version =&gt; 1, :container =&gt; &quot;bar&quot;)
-    conns[7].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 5, :content_block =&gt; @block2, :content_block_version =&gt; 1, :container =&gt; &quot;foo&quot;)
-    conns[8].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :content_block =&gt; @block1, :content_block_version =&gt; 1, :container =&gt; &quot;bar&quot;)
+    conns[0].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 2, :connectable =&gt; @block1, :connectable_version =&gt; 1, :container =&gt; &quot;bar&quot;)
+    conns[1].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 3, :connectable =&gt; @block1, :connectable_version =&gt; 1, :container =&gt; &quot;bar&quot;)
+    conns[2].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 3, :connectable =&gt; @block2, :connectable_version =&gt; 1, :container =&gt; &quot;bar&quot;)
+    conns[3].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 4, :connectable =&gt; @block1, :connectable_version =&gt; 1, :container =&gt; &quot;bar&quot;)
+    conns[4].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 4, :connectable =&gt; @block2, :connectable_version =&gt; 1, :container =&gt; &quot;bar&quot;)
+    conns[5].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 4, :connectable =&gt; @block2, :connectable_version =&gt; 1, :container =&gt; &quot;foo&quot;)
+    conns[6].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 5, :connectable =&gt; @block1, :connectable_version =&gt; 1, :container =&gt; &quot;bar&quot;)
+    conns[7].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 5, :connectable =&gt; @block2, :connectable_version =&gt; 1, :container =&gt; &quot;foo&quot;)
+    conns[8].should_meet_expectations(:page =&gt; @page, :page_version =&gt; 6, :connectable =&gt; @block1, :connectable_version =&gt; 1, :container =&gt; &quot;bar&quot;)
    
   end
   it &quot;should destroy one of the connectors&quot; do
-    @destroy_connector.call
-    @page.reload.connectors.size.should == 1
+    @remove_connector.call
+    @page.reload.connectors.for_page_version(@page.version).size.should == 1
   end
   
 end
@@ -663,13 +640,17 @@ end
 describe &quot;A published page&quot; do
   before do
     @user = create_user
-    @page = create_page(:section =&gt; root_section, :updated_by_user =&gt; @user)
-    @page.publish!(@user)
+    User.current = @user
+    @page = create_page(:section =&gt; root_section)
+    @page.publish!
     @page = Page.find(@page.id)
   end
+  after do
+    User.current = nil
+  end
   describe &quot;when adding a block by 'save and publish'&quot; do
     before do
-      @save_and_publish_the_block = lambda { @block = create_html_block(:connect_to_page_id =&gt; @page.id, :publish_on_save =&gt; true, :connect_to_container =&gt; &quot;testing&quot;, :updated_by_user =&gt; @user, :name =&gt; &quot;Home&quot;) }
+      @save_and_publish_the_block = lambda { @block = create_html_block(:connect_to_page_id =&gt; @page.id, :publish_on_save =&gt; true, :connect_to_container =&gt; &quot;testing&quot;, :name =&gt; &quot;Home&quot;) }
     end
 
     it &quot;should change the connector count by 1&quot; do
@@ -677,7 +658,9 @@ describe &quot;A published page&quot; do
     end
 
     it &quot;should make the page have one connector&quot; do
-      @save_and_publish_the_block.should change(@page.connectors, :count).by(1)
+      count = @page.connectors.for_page_version(@page.version).count
+      @save_and_publish_the_block.call
+      @page.reload.connectors.for_page_version(@page.version).count.should == count + 1
     end
 
     it &quot;should set the page version to 4&quot; do
@@ -697,7 +680,7 @@ describe &quot;A published page&quot; do
   end
   describe &quot;when adding a block by 'save'&quot; do
     before do
-      @save_the_block = lambda { @block = create_html_block(:connect_to_page_id =&gt; @page.id, :connect_to_container =&gt; &quot;testing&quot;, :updated_by_user =&gt; @user, :name =&gt; &quot;Home&quot;) }
+      @save_the_block = lambda { @block = create_html_block(:connect_to_page_id =&gt; @page.id, :connect_to_container =&gt; &quot;testing&quot;, :name =&gt; &quot;Home&quot;) }
     end
 
     it &quot;should change the connector count by 1&quot; do
@@ -705,7 +688,9 @@ describe &quot;A published page&quot; do
     end
 
     it &quot;should make the page have one connector&quot; do
-      @save_the_block.should change(@page.connectors, :count).by(1)
+      count = @page.connectors.for_page_version(@page.version).count
+      @save_the_block.call
+      @page.reload.connectors.for_page_version(@page.version).count.should == count + 1
     end
 
     it &quot;should set the page version to 4&quot; do
@@ -743,21 +728,21 @@ describe &quot;An unpublished page with 1 published and an 1 unpublished block,&quot; do
     @page = create_page(:section =&gt; root_section)
     @published_block = create_html_block(:name =&gt; &quot;Published&quot;)
     @unpublished_block = create_html_block(:name =&gt; &quot;Unpublished&quot;)
-    @page.add_content_block!(@published_block, &quot;main&quot;)
-    @page.add_content_block!(@unpublished_block, &quot;main&quot;)
-    @published_block.publish!(create_user)
+    @page.create_connector(@published_block, &quot;main&quot;)
+    @page.create_connector(@unpublished_block, &quot;main&quot;)
+    @published_block.publish!
     @page.reload
   end
   describe &quot;when publishing the block&quot; do
-    it &quot;the block should be live&quot; do
-      @published_block.should be_live
+    it &quot;the block should be published&quot; do
+      @published_block.should be_published
     end
-    it &quot;the page should not be live&quot; do
-      @page.should_not be_live
+    it &quot;the page should not be published&quot; do
+      @page.should_not be_published
     end
   end
   describe &quot;when publishing the page,&quot; do
-    before { @publishing_the_page = lambda { @page.publish!(create_user) } }
+    before { @publishing_the_page = lambda { @page.publish! } }
     it &quot;should create a new version of the page&quot; do
       @publishing_the_page.should change(Page::Version, :count).by(1)
     end
@@ -767,21 +752,21 @@ describe &quot;An unpublished page with 1 published and an 1 unpublished block,&quot; do
     it &quot;should not create a new version of the published block&quot; do
       @publishing_the_page.should_not change(@published_block.versions, :count)
     end
-    it &quot;the page should be live&quot; do
+    it &quot;the page should be published&quot; do
       @publishing_the_page.call
-      @page.should be_live
+      @page.should be_published
     end
-    it &quot;the unpublished block should be live&quot; do
+    it &quot;the unpublished block should be published&quot; do
       @publishing_the_page.call
-      @unpublished_block.reload.should be_live
+      @unpublished_block.reload.should be_published
     end
-    it &quot;the published block should be live&quot; do
+    it &quot;the published block should be published&quot; do
       @publishing_the_page.call
-      @published_block.reload.should be_live
+      @published_block.reload.should be_published
     end
     it &quot;the page should be connected to the latest version of the unpublished block&quot; do
       @publishing_the_page.call
-      @page.reload.connectors.last.content_block_version.should == 2
+      @page.reload.connectors.for_page_version(@page.version).last.connectable_version.should == 2
     end
   end
 end
@@ -805,34 +790,28 @@ describe &quot;Reverting a block that is on multiple pages&quot; do
     @page2.version.should == 1
 
     # 4. Goto page 2, and select that block. (Page 2, v2)    
-    @page2.add_content_block!(@block, &quot;main&quot;)
+    @page2.create_connector(@block, &quot;main&quot;)
     reset(:page1, :page2, :block)
     @page1.version.should == 2
     @page2.version.should == 2
 
     # 5. Edit the block (Page 1, v3, Page 2, v3, Block v2)
-    @block.update_attributes!(:name =&gt; &quot;Block v2&quot;, :updated_by_user =&gt; create_user)
+    @block.update_attributes!(:name =&gt; &quot;Block v2&quot;)
     reset(:page1, :page2, :block)
     @page1.version.should == 3
     @page2.version.should == 3
     @block.version.should == 2
     
     # 6. Revert page 1 to version 2. (Page 1, v4, Page 2, v4, Block v3)
-    log Page.to_table_with(:id, :version, :name)
-    log HtmlBlock.to_table_with(:id, :version, :name)
-    log Connector.to_table_without(:created_at, :updated_at)
-    @page1.revert_to(2, create_user)
-    log Page.to_table_with(:id, :version, :name)
-    log HtmlBlock.to_table_with(:id, :version, :name)
-    log Connector.to_table_without(:created_at, :updated_at)
+    @page1.revert_to(2)
     reset(:page1, :page2, :block)
     @page1.version.should == 4
     @page2.version.should == 4
     @block.version.should == 3    
     
     # Expected: Both page 1 and 2 will display the same version of the block (v1).
-    @page1.connectors.first.content_block.name.should == &quot;Block v1&quot;
-    @page2.connectors.first.content_block.name.should == &quot;Block v1&quot;
+    @page1.connectors.first.connectable.name.should == &quot;Block v1&quot;
+    @page2.connectors.first.connectable.name.should == &quot;Block v1&quot;
     
   end
 end
@@ -844,7 +823,7 @@ describe &quot;Viewing a previous version of a page&quot; do
   #   @page = create_page(:section =&gt; root_section)
   #   @section = create_section(:parent =&gt; root_section, :name =&gt; &quot;Other&quot;)
   #   reset(:page)
-  #   @page.update_attributes!(:section =&gt; @section, :updated_by_user =&gt; create_user)
+  #   @page.update_attributes!(:section =&gt; @section)
   #   reset(:page)
   #   @page.section.should == @section
   #   @page.as_of_version(1).section.should == root_section
@@ -855,7 +834,7 @@ describe &quot;Viewing a previous version of a page&quot; do
     @bar = create_page_template(:name =&gt; &quot;Bar&quot;)
     @page = create_page(:section =&gt; root_section, :template =&gt; @foo)
     reset(:page)
-    @page.update_attributes!(:template =&gt; @bar, :updated_by_user =&gt; create_user)
+    @page.update_attributes!(:template =&gt; @bar)
     reset(:page)
     @page.template.should == @bar
     @page.as_of_version(1).template.should == @foo
@@ -874,13 +853,13 @@ describe &quot;Viewing a previous version of a page&quot; do
     @block.version.should == 1 
     
     # 3. Publish Page A (Page A v3, Block A v2)
-    @page.publish!(create_user)
+    @page.publish!
     reset(:page, :block)
     @page.version.should == 3
     @block.version.should == 2 
     
     # 4. Edit Block A (Page A v4, Block A v3)
-    @block.update_attributes!(:name =&gt; &quot;Block 2&quot;, :updated_by_user =&gt; create_user)
+    @block.update_attributes!(:name =&gt; &quot;Block 2&quot;)
     reset(:page, :block)
     @page.version.should == 4
     @block.version.should == 3 
@@ -888,7 +867,7 @@ describe &quot;Viewing a previous version of a page&quot; do
     # Open Page A in a different browser (as guest)
     @live_page = Page.find_live_by_path(@page.path)
     @live_page.version.should == 3
-    @live_page.version_connectors.first.content_block.name.should == &quot;Block 1&quot;
+    @live_page.connectors.for_page_version(@live_page.version).first.connectable.live_version.name.should == &quot;Block 1&quot;
      
   end
 end
@@ -900,7 +879,7 @@ describe &quot;Selecting a block&quot; do
     reset(:page, :block)
     @page.should be_published
     @block.should be_published
-    @page.add_content_block!(@block, &quot;main&quot;)
+    @page.create_connector(@block, &quot;main&quot;)
     reset(:page, :block)
   end
   it &quot;should put the page into draft mode&quot; do</diff>
      <filename>spec/models/page_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@ describe Portlet do
 
   it &quot;should be marked as not supporting revisioning&quot; do
     p = new_dynamic_portlet
-    p.versionable?.should be_false
+    p.class.should_not be_versioned
   end
 
   describe &quot;when appearing in a list&quot; do</diff>
      <filename>spec/models/portlet_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -103,7 +103,8 @@ class ActiveRecord::Base
     else
       columns = column_names      
     end
-    all.to_table(*columns)
+    (uses_soft_delete? ? find_with_deleted(:all) : all).to_table(*columns)
+    #connection.select_all(&quot;select * from #{table_name}&quot;).map{|r| OpenStruct.new(r)}.to_table(*columns)
   end
   def self.to_table_with(*columns)
     to_table(:include_columns =&gt; columns)
@@ -111,4 +112,7 @@ class ActiveRecord::Base
   def self.to_table_without(*columns)
     to_table(:exclude_columns =&gt; columns)
   end
+  def self.to_table_without_stamps(*columns)
+    to_table(:exclude_columns =&gt; %w[created_at updated_at created_by_id updated_by_id] + columns)
+  end  
 end 
\ No newline at end of file</diff>
      <filename>spec/spec_extensions.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/cms/acts/paranoid.rb</filename>
    </removed>
    <removed>
      <filename>lib/version_fu.rb</filename>
    </removed>
    <removed>
      <filename>spec/lib/block_support_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/.gitignore</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/History.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/Manifest.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/README.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/Rakefile</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/UPGRADE</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/CHANGES</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/rspec_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/all_stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/previous_failures.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/rcov.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/rspec.rake</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/script/autospec</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/script/spec</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/script/spec_server</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/spec.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/stories_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/USAGE</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/rspec_controller_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/templates/controller_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/templates/helper_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/templates/view_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_default_values.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_model/USAGE</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_model/rspec_model_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_model/templates/model_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/rspec_scaffold_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/controller_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/edit_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/helper_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/index_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/new_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/routing_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/show_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/init.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/autotest/discover.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/autotest/rails_rspec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/assigns_hash_proxy.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/controller_example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/cookies_proxy.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/functional_example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/helper_example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/model_example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/rails_example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/render_observer.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/view_example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/base.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/rescue.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/test_response.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_view/base.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/active_record/base.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/object.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/spec/example/configuration.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/spec/matchers/have.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/interop/testcase.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/assert_select.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/have_text.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/include_text.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/redirect_to.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/render_template.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/mocks.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/story_adapter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/version.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/autotest/mappings_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/assigns_hash_proxy_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/configuration_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/controller_isolation_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/controller_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/cookies_proxy_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/example_group_factory_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/helper_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/model_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/shared_behaviour_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/view_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/extensions/action_controller_rescue_action_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/extensions/action_view_base_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/extensions/active_record_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/interop/testcase_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/assert_select_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/description_generation_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/errors_on_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/have_text_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/include_text_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/redirect_to_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/render_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/mocks/ar_classes.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/mocks/mock_model_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/mocks/stub_model_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/sample_modified_fixture.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/sample_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/spec_server_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails/spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/rails_suite.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/action_view_base_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/controller_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/redirect_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/render_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/rjs_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/explicit_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/more_explicit_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/plugin_application_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/view_spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_with_template.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/_a_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/some_action.js.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/some_action.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/some_action.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/hide_div.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/hide_page_element.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/insert_html.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/replace.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/replace_html.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/visual_effect.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/tag_spec/no_tags.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial_used_twice.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial_with_sub_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_spacer.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/accessor.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/entry_form.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/explicit_helper.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/foo/show.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/implicit_helper.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/multiple_helpers.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/template_with_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/template_with_partial_using_collection.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/template_with_partial_with_array.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/stories/all.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/stories/configuration/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/stories/helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/stories/steps/people.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/stories/transactions_should_rollback</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec-rails/stories/transactions_should_rollback.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/.autotest</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/.gitignore</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/History.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/Manifest.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/README.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/Rakefile</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/TODO</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/bin/autospec</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/bin/spec</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/autogenerated_docstrings_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/before_and_after_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/behave_as_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/custom_expectation_matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/custom_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/dynamic_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/file_accessor.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/file_accessor_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/greeter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/helper_method_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/io_processor.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/io_processor_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/legacy_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/mocking_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/multi_threaded_behaviour_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/nested_classes_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/partial_mock_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/pending_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/predicate_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/priority.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/shared_example_group_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/shared_stack_examples.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/stack.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/stack_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/stack_spec_with_nested_example_groups.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pure/stubbing_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/adder.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/addition</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/addition.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/calculator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/.loadpath</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/README.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/everything.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/examples/examples.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/steps.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/stories.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/life.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/life/game.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/life/grid.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stories/steps/addition_steps.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/README.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/diffing_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/failing_autogenerated_docstrings_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/failure_in_setup.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/failure_in_teardown.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/mocking_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/mocking_with_flexmock.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/mocking_with_mocha.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/mocking_with_rr.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/partial_mock_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/predicate_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/raising_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/syntax_error_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/team_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/failing_examples/timeout_behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/init.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/autotest/discover.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/autotest/rspec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/adapters.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/adapters/ruby_engine.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/adapters/ruby_engine/mri.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/adapters/ruby_engine/rubinius.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/configuration.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/errors.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/example_group_factory.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/example_group_methods.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/example_matcher.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/example_methods.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/module_inclusion_warnings.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/module_reopening_fix.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/pending.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/example/shared_example_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/expectations.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/expectations/differs/default.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/expectations/errors.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/expectations/extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/expectations/handler.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/extensions/class.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/extensions/main.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/extensions/metaclass.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/extensions/object.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/interop/test.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/autorunner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/testcase.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/testresult.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/be.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/be_close.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/change.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/eql.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/equal.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/exist.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/has.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/have.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/include.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/match.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/raise_error.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/respond_to.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/satisfy.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/simple_matcher.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/argument_constraint_matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/error_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/errors.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/framework.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/methods.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/mock.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/order_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/proxy.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/space.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/rake/spectask.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/class_and_arguments_parser.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/command_line.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/nested_text_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/profile_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/snippet_extractor.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/story/html_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/story/progress_bar_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/text_mate_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/heckle_runner_unsupported.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/option_parser.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/options.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/reporter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/spec_parser.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions/main.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions/regexp.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions/string.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/given_scenario.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/plain_text_story_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/scenario_collector.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/scenario_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/story_mediator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/story_parser.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/story_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/scenario.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/step.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/step_group.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/step_mother.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/story.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/world.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/version.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/plugins/mock_frameworks/flexmock.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/plugins/mock_frameworks/mocha.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/plugins/mock_frameworks/rr.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/rake_tasks/examples.rake</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/rake_tasks/examples_with_rcov.rake</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/rake_tasks/failing_examples_with_html.rake</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/rake_tasks/verify_rcov.rake</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/README.jruby</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/autotest/discover_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/autotest/rspec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/autotest_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/autotest_matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/rspec_suite.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/ruby_forker.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/adapters/ruby_engine_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/configuration_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group/described_module_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group/warning_messages_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_class_definition_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_factory_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_methods_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_matcher_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_methods_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_runner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/example_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/nested_example_group_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/pending_module_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/predicate_matcher_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/shared_example_group_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/example/subclassing_example_group_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/extensions/main_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/testcase_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/be_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/change_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/has_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/have_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/include_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/match_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/simple_matcher_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_10263_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_11545_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_15719_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/hash_including_matcher_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/class_and_argument_parser_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/empty_file.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/examples.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/failed.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/nested_text_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/story/html_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/options_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/output_one_time_fixture.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/output_one_time_fixture_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/output_one_time_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/resources/a_bar.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/resources/a_foo.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/resources/a_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec_drb.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec_parser/spec_parser_fixture.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec_spaced.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/spec_classes.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/builders.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/extensions/main_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/extensions_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/given_scenario_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/plain_text_story_runner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/scenario_collector_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/scenario_runner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/story_mediator_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/story_parser_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/story_runner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/runner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/scenario_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/step_group_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/step_mother_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/step_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/story_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/story_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/world_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/all.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/configuration/before_blocks.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/configuration/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/example_groups/autogenerated_docstrings</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/example_groups/example_group_with_should_methods</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/example_groups/nested_groups</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/example_groups/output</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/example_groups/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/interop/examples_and_tests_together</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/interop/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/interop/test_case_with_should_methods</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/mock_framework_integration/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/mock_framework_integration/use_flexmock.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/pending_stories/README</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/helpers/cmdline.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/helpers/story_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/matchers/smart_match.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/spec/before_blocks_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/spec/example_group_with_should_methods.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/spec/simple_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/spec/spec_with_flexmock.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/steps/running_rspec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/stories/failing_story.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/test/spec_and_test_together.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/resources/test/test_case_with_should_methods.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/stories/multiline_steps.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/stories/steps/multiline_steps.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/stories/stories/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/builder.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/controls.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/dragdrop.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/effects.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/prototype.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/rspec.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/scriptaculous.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/slider.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/sound.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/unittest.js</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/lib/server.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/stories.html</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/stylesheets/rspec.css</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/story_server/prototype/stylesheets/test.css</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>08f44d82f500a0262590d77af0a8926fe9df29e1</id>
    </parent>
  </parents>
  <author>
    <name>pbarry</name>
    <email>pbarry@0d4fd071-7843-0410-978a-dc594407b538</email>
  </author>
  <url>http://github.com/browsermedia/browsercms/commit/06a70f0f1e769906e77189294d23e10338800430</url>
  <id>06a70f0f1e769906e77189294d23e10338800430</id>
  <committed-date>2008-12-03T17:38:51-08:00</committed-date>
  <authored-date>2008-12-03T17:38:51-08:00</authored-date>
  <message>Major refactoring for behaviors, User.current, using just rspec gems now


git-svn-id: https://svn.browsermedia.com/bmedia/browsercms/trunk@3462 0d4fd071-7843-0410-978a-dc594407b538</message>
  <tree>178d2a6726332da9a67cd4c6e809d74258785725</tree>
  <committer>
    <name>pbarry</name>
    <email>pbarry@0d4fd071-7843-0410-978a-dc594407b538</email>
  </committer>
</commit>
