       if _.isArray(it)
          return it.map (el) => @from el
    
-   # TODO: `construct()` (or `constructify()`) this
-   constructor: (@to, @isResponsible = false) ->
+   constructor: constructify (@to, @isResponsible = false) ->
    
    clone: -> new Relation @to, @isResponsible
    



paws.Label = Label = class Label extends Thing
   constructor: (string) ->
      it = construct this
      it.alien = new String string
      it.alien.native = this
      return it
   
   clone: (to) ->
      to ?= new Label

# Core data-types
# ---------------
paws.Thing = Thing = parameterizable class Thing
   constructor: constructify(return:@) (elements...) ->
      @id = uuid.v4()
      @metadata = new Array
      @push elements... if elements.length
      
      @metadata.unshift undefined if @_?.noughtify != no
   
   # Creates a copy of the `Thing` it is called on. Alternatively, can be given an extant `Thing`
   # copy this `Thing` *to*, over-writing that `Thing`'s metadata. In the process, the
