         }
       }
       'farm': {
-        'num':[1,2] #min-max
-        'width': 20
-        'height': 20
+        'num':[1,1] #min-max
+        'width': 25
+        'height': 15
         'clusters': {
           'farm':[1,1]
           'shrubs':[2,3]

    for i in _.range(0, presetSize.x, thangSizes.floorSize.x)
      for j in _.range(0, presetSize.y, thangSizes.floorSize.y)
        @thangs.push {
          'id': @getRandomThang(preset.floors)
          'pos': {
            'x': i + thangSizes.floorSize.x/2
            'y': j + thangSizes.floorSize.y/2
          }
        }

  randomizeBorder: (preset, presetSize, noiseFactor=1) ->
    for i in _.range(0, presetSize.x, thangSizes.borderSize.x)
      for j in _.range(thangSizes.borderSize.thickness)
        while not @addThang {
          'id': @getRandomThang(preset.borders)
          'pos': {
            'x': i + preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.x/2, thangSizes.borderSize.x/2)
            'y': 0 + preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.y/2, thangSizes.borderSize.y)
          }
        }
          continue
        while not @addThang {
          'id': @getRandomThang(preset.borders)
          'pos': {
            'x': i + preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.x/2, thangSizes.borderSize.x/2)
            'y': presetSize.y - preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.y, thangSizes.borderSize.y/2)
          }
        }
          continue

    for i in _.range(0, presetSize.y, thangSizes.borderSize.y)
      for j in _.range(3)
        while not @addThang {
          'id': @getRandomThang(preset.borders)
          'pos': {
            'x': 0 + preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.x/2, thangSizes.borderSize.x)
            'y': i + preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.y/2, thangSizes.borderSize.y/2)
          }
        }
          continue
        while not @addThang {
          'id': @getRandomThang(preset.borders)
          'pos': {
            'x': presetSize.x - preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.x, thangSizes.borderSize.x/2)
            'y': i + preset.borderSize/2 + noiseFactor * _.random(-thangSizes.borderSize.y/2, thangSizes.borderSize.y/2)
          }
        }
          continue


CocoModel = require 'models/CocoModel'

clusters = {
  'rocks': {
    'thangs': ['Rock 1', 'Rock 2', 'Rock 3', 'Rock 4', 'Rock 5', 'Rock Cluster 1', 'Rock Cluster 2', 'Rock Cluster 3']
    'margin': 1
  }
  'trees': {
    'thangs': ['Tree 1', 'Tree 2', 'Tree 3', 'Tree 4']
    'margin': 0
    } 
  'shrubs': {
    'thangs': ['Shrub 1', 'Shrub 2', 'Shrub 3']
    'margin': 0
    } 
  'houses': {
    'thangs': ['House 1', 'House 2', 'House 3', 'House 4']
    'margin': 4
    } 
  'animals': {
    'thangs': ['Cow', 'Horse']
    'margin': 1
    } 
  'wood': {
    'thangs': ['Firewood 1', 'Firewood 2', 'Firewood 3', 'Barrel']
    'margin': 1
    } 
  'farm': {
    'thangs': ['Farm']
    'margin': 9
    } 
  'cave': {
    'thangs': ['Cave']
    'margin': 5
    } 
  'stone': {
    'thangs': ['Gargoyle', 'Rock Cluster 1', 'Rock Cluster 2', 'Rock Cluster 3']
    'margin': 1
    } 
  'grass_floor': {
    'thangs': ['Grass01', 'Grass02', 'Grass03', 'Grass04', 'Grass05']
    'margin': -1
    } 
  'dungeon_wall': {
    'thangs': ['Dungeon Wall']
    'margin': 0
    } 
  'dungeon_floor': {
    'thangs': ['Dungeon Floor']
    'margin': -1
    } 
}

presets = {
  'dungeon': {
    'type':'dungeon'
    'borders':'dungeon_wall'
    'borderNoise':0
    'borderSize':4
    'floors':'dungeon_floor'
    'decorations': {
      'cave': {
        'num':[1,1]
