diff --git a/PuzzlePlayer/PuzzlePlayer.cs b/PuzzlePlayer/PuzzlePlayer.cs
index ac27d0e94abd43482c19e8df4f66609d06fc82a8..b1d674207e1aa1443ee2fdaca4018341add18a29 100644
--- a/PuzzlePlayer/PuzzlePlayer.cs
+++ b/PuzzlePlayer/PuzzlePlayer.cs
@@ -10,7 +10,7 @@ namespace PuzzlePlayer_Namespace
     {
         internal static void Main(string[] args)
         {
-            Application.Run(new PuzzleForm(new Skyscrapers()));
+            Application.Run(new PuzzleForm(new Skyscrapers(6)));
         }
     }
 
diff --git a/PuzzlePlayer/Skyscrapers.cs b/PuzzlePlayer/Skyscrapers.cs
index c3b635112fc42c91a131f96dbf2cd96c99faddeb..cb24eeafc76cf6bbe0eb0cf3b061e58157b2ebbf 100644
--- a/PuzzlePlayer/Skyscrapers.cs
+++ b/PuzzlePlayer/Skyscrapers.cs
@@ -2,11 +2,13 @@
 using System.Collections.Generic;
 using System.Drawing;
 using System.Drawing.Text;
+using System.IO;
 using System.Linq;
 using System.Security.Cryptography.Xml;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using System.Windows.Forms.Design;
 
 namespace PuzzlePlayer_Namespace
 {
@@ -16,14 +18,18 @@ namespace PuzzlePlayer_Namespace
         public string[,] candidateState;
         public Skyscrapers(int boardSize = 6)
         {
-            boardState = GetClearBoard(boardSize);
-            lastGeneratedBoard = GetClearBoard(boardSize);
-            candidateState = new string[boardSize, boardSize];
+            boardState = GetClearBoard(boardSize + 2);
+            lastGeneratedBoard = GetClearBoard(boardSize + 2);
+            candidateState = new string[boardSize + 2, boardSize + 2];
             description = "lol";
             drawFactor = 1;
             candidateState[1, 1] = "123";
             candidateState[2, 3] = "1734";
             candidateState[4, 4] = "123456789";
+            boardState[1, 1] = 1;
+            boardState[2, 2] = 2;
+            boardState[3, 3] = 3;
+            boardState[4, 4] = 4;
         }
         public override void Draw(Graphics gr, Rectangle r)
         {
@@ -90,13 +96,29 @@ namespace PuzzlePlayer_Namespace
 
         public override void Generate()
         {
-            int[] remaining = new int[boardState.GetLength(0)];
-            for (int i = 0; i < remaining.Length; i++)
-                remaining[i] = i + 1;
-            for (int i = 0; i < boardState.GetLength(0); i++)
+            boardState = GetClearBoard(boardState.GetLength(0));
+            candidateState = new string[boardState.GetLength(0), boardState.GetLength(1)];
+            Random random = new Random();
+            void RandomFillLine(int direction)
             {
-
+                List<int> options = new List<int>();
+                for (int i = 0; i < boardState.GetLength(0) - 2; i++)
+                    options.Add(i + 1);
+                int deficit = 0;
+                if (boardState[1, 1] != emptySpace)
+                {
+                    options.Remove(boardState[1, 1]);
+                    deficit++;
+                }
+                for (int i = deficit; i < boardState.GetLength(0) - 2; i++)
+                {
+                    int index = random.Next(options.Count);
+                    boardState[1 + i * (1 - direction), 1 + i * direction] = options[index];
+                    options.RemoveAt(index);
+                }
             }
+            RandomFillLine(0);
+            RandomFillLine(1);
             return;
         }