public LinkedListNode <Cell> AddCell(Direction direction) { var offset = (int)direction * Size.Height; var prevCell = direction == Direction.Left ? Cells.First : Cells.Last; var prevCellLocation = prevCell?.Value.Location; var cell = new Cell(Size.Height, (prevCellLocation ?? 0) + offset); Controls.Add(cell); if (direction == Direction.Left) { Cells.AddFirst(cell); return(Cells.First); } else { Cells.AddLast(cell); return(Cells.Last); } }