diff --git a/source/ChromeDevTools/ChromeProcessFactory.cs b/source/ChromeDevTools/ChromeProcessFactory.cs
index 494568ef65ac924090158d1f45d5b8a20d8e7409..85017bf103915e7f72bad087d2742f0efde9c079 100644
--- a/source/ChromeDevTools/ChromeProcessFactory.cs
+++ b/source/ChromeDevTools/ChromeProcessFactory.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
 
@@ -7,21 +8,31 @@ namespace MasterDevs.ChromeDevTools
     public class ChromeProcessFactory : IChromeProcessFactory
     {
         public IDirectoryCleaner DirectoryCleaner { get; set; }
+        public string ChromePath { get; }
 
-        public ChromeProcessFactory(IDirectoryCleaner directoryCleaner)
+        public ChromeProcessFactory(IDirectoryCleaner directoryCleaner, string chromePath = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
         {
             DirectoryCleaner = directoryCleaner;
+            ChromePath = chromePath;
         }
 
-        public IChromeProcess Create(int port)
+        public IChromeProcess Create(int port, bool headless)
         {
             string path = Path.GetRandomFileName();
             var directoryInfo = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), path));
             var remoteDebuggingArg = $"--remote-debugging-port={port}";
             var userDirectoryArg = $"--user-data-dir=\"{directoryInfo.FullName}\"";
             const string headlessArg = "--headless --disable-gpu";
-            var chromeProcessArgs = $"{headlessArg} {remoteDebuggingArg} {userDirectoryArg} --bwsi --no-first-run";
-            var processStartInfo = new ProcessStartInfo(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", chromeProcessArgs);
+            var chromeProcessArgs = new List<string>
+            {
+                remoteDebuggingArg,
+                userDirectoryArg,
+                "--bwsi",
+                "--no-first-run"
+            };
+            if (headless)
+                chromeProcessArgs.Add(headlessArg);
+            var processStartInfo = new ProcessStartInfo(ChromePath, string.Join(" ", chromeProcessArgs));
             var chromeProcess = Process.Start(processStartInfo);
 
             string remoteDebuggingUrl = "http://localhost:" + port;
diff --git a/source/ChromeDevTools/IChromeProcessFactory.cs b/source/ChromeDevTools/IChromeProcessFactory.cs
index ddf57955e97a993ed0f5341c94e362af2c9d86ee..fcac1ce28ce0cec469a2e073f8a1b4857aa9a4f7 100644
--- a/source/ChromeDevTools/IChromeProcessFactory.cs
+++ b/source/ChromeDevTools/IChromeProcessFactory.cs
@@ -2,6 +2,6 @@
 {
     public interface IChromeProcessFactory
     {
-        IChromeProcess Create(int port);
+        IChromeProcess Create(int port, bool headless);
     }
 }
\ No newline at end of file
diff --git a/source/Sample/Program.cs b/source/Sample/Program.cs
index 2d42013a6b697272d0e9a89dc51952e245a20d6f..7b3761d0e1ae274afca6aaa43f4120d5a61f6717 100644
--- a/source/Sample/Program.cs
+++ b/source/Sample/Program.cs
@@ -22,7 +22,7 @@ namespace MasterDevs.ChromeDevTools.Sample
 
                 // STEP 1 - Run Chrome
                 var chromeProcessFactory = new ChromeProcessFactory(new StubbornDirectoryCleaner());
-                using (var chromeProcess = chromeProcessFactory.Create(9222))
+                using (var chromeProcess = chromeProcessFactory.Create(9222, true))
                 {
                     // STEP 2 - Create a debugging session
                     var sessionInfo = (await chromeProcess.GetSessionInfo()).LastOrDefault();