       @init()
       @_model = model
       @_conditions = []
-      @_order = null
+      @_orders = null
       @_populated = false
   
     @initializer 'withScope', (scope) ->
       @init()
       @_model = scope._model
-      @_conditions = []
-      for condition in scope._conditions
-        @_conditions.push condition
-      @_order = scope._order
+      @_conditions = scope._conditions && scope._conditions.slice(0)
+      @_orders = scope._orders && scope._orders.slice(0)
       @_populated = false
   
     @property 'model', 'read'

        for condition in conditions
          @_conditions.push condition
  
    @method 'order', (order) ->
      @fork ->
        @_order = order
    
    @method 'index', ->
      unless @_index

        @index().each (candidate) ->
          self.add candidate if candidate.matches self._conditions
        
        if @_orders
          orders = @_orders
          @_array.sort (a, b) ->
            for attribute in orders
              if attribute.reverse
                a_value = b.get attribute.reverse
                b_value = a.get attribute.reverse
              else
                a_value = a.get attribute
                b_value = b.get attribute
              return 1  if a_value > b_value
              return -1 if a_value < b_value
            0
        
        @_populated = true
  
