diff --git a/Makefile b/Makefile
index 6218542..ad25a5a 100644
--- a/Makefile
+++ b/Makefile
@@ -23,10 +23,11 @@ format:
 run: format
 	crystal run $(ENTRY_POINT)
 
-.PHONY: spec
-spec: format
-	crystal spec --warnings all --error-on-warnings --error-trace
-
 .PHONY: ameba
 ameba:
 	ameba src/ || true
+
+.PHONY: spec
+spec: format ameba
+	crystal spec --warnings all --error-on-warnings --error-trace
+
diff --git a/src/app.cr b/src/app.cr
index d4c562f..702691d 100644
--- a/src/app.cr
+++ b/src/app.cr
@@ -6,7 +6,7 @@ class App
   @ts : Game::TimePoint
 
   def initialize
-    @map = Game::Generator.make 6, 8, 10
+    @map = Game::MapGenerator.make 6, 8, 10
     @ts = Time.local.to_unix
     @world = Game::World.new @map, @ts
     @buildings = Game::BuildingFactory.new
diff --git a/src/game/map.cr b/src/game/map.cr
index 8a70c4a..ed4b321 100644
--- a/src/game/map.cr
+++ b/src/game/map.cr
@@ -60,18 +60,4 @@ module Game
       seek_tile
     end
   end
-
-  class Generator
-    def self.make(rows, cols, deposits = 5) : Map
-      rnd = Random.new
-      map = Map.new(rows, cols)
-      deposits.times do
-        point = Point.new(rnd.rand(0...rows), rnd.rand(0...cols))
-        cap = rnd.rand(2...6)
-        deposit = Deposit.new(Resource::Type::Crystals, cap * 50)
-        map.set DepositTile.new(point, deposit)
-      end
-      map
-    end
-  end
 end
diff --git a/src/game/map_generator.cr b/src/game/map_generator.cr
new file mode 100644
index 0000000..8a8f377
--- /dev/null
+++ b/src/game/map_generator.cr
@@ -0,0 +1,13 @@
+class Game::MapGenerator
+  def self.make(rows, cols, deposits = 5) : Map
+    rnd = Random.new
+    map = Map.new(rows, cols)
+    deposits.times do
+      point = Point.new(rnd.rand(0...rows), rnd.rand(0...cols))
+      cap = rnd.rand(2...6)
+      deposit = Deposit.new(Resource::Type::Crystals, cap * 50)
+      map.set DepositTile.new(point, deposit)
+    end
+    map
+  end
+end