diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,4 +1,11 @@
 
+20170402 phoityne-vscode-0.0.13.0
+  * [FIX] [10](https://github.com/phoityne/phoityne-vscode/issues/10) : Unable to set breakpoints
+  * [FIX] [11](https://github.com/phoityne/phoityne-vscode/issues/11) : Debugger not progressing past IO
+  * [ADD] [12](https://github.com/phoityne/phoityne-vscode/issues/12) : support Column break points
+  * [MODIFY] [6](https://github.com/phoityne/phoityne-vscode/issues/6) : adding stopOnEntry setting on launch.json 
+  * [MODIFY] : add ghci-options -fprint-evld-with-show to stack run command in launch.json file.
+
 20170205 phoityne-vscode-0.0.12.0
   * [FIX] [8](https://github.com/phoityne/phoityne-vscode/issues/8) : Unterminated process after leaving GHCi 
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,26 +7,40 @@
 
 ## Information
 
-* [2017/02/05] phoityne-vscode released.  
-  * Marketplace [phoityne-vscode-0.0.10](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)
-  * hackage [phoityne-vscode-0.0.12.0](https://hackage.haskell.org/package/phoityne-vscode)  
+* [2017/04/02] phoityne-vscode released.  
+  * Marketplace [phoityne-vscode-0.0.11](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)
+  * hackage [phoityne-vscode-0.0.13.0](https://hackage.haskell.org/package/phoityne-vscode)  
 * Release Summary
-  * FIX [8](https://github.com/phoityne/phoityne-vscode/issues/8) : Unterminated process after leaving GHCi
+  * FIX [10](https://github.com/phoityne/phoityne-vscode/issues/10) : Unable to set breakpoints
+  * FIX [11](https://github.com/phoityne/phoityne-vscode/issues/11) : Debugger not progressing past IO
+  * ADD [12](https://github.com/phoityne/phoityne-vscode/issues/12) : support Column breakpoints
+  * MODIFY [6](https://github.com/phoityne/phoityne-vscode/issues/6) : add "stopOnEntry" setting to launch.json 
+  * MODIFY : add "--ghci-options -fprint-evld-with-show" to ghci command option in launch.json, instead of hard-coded.
 
 
+
 ![01_debug.gif](https://raw.githubusercontent.com/phoityne/phoityne-vscode/master/docs/01_debug.gif)
 
 
 ## Important
 
-* Breakpoint can be set in a .hs file which defineds "module ... where".
-* Source file extension must be ".hs"
+* Limitation. Breakpoint can be set in a .hs file which defineds "module ... where".
+* Limitation. Source file extension must be ".hs"
+* Limitation. Can not use STDIN handle while debugging. 
 * When you start debugging for the first time, .vscode/tasks.json will be created automatically. Then you can use F6, F7, F8 shortcut key.
   * F5 : start debug
   * F6 : show command menu (for stack watch)
   * Shift + F6 : stop stack watch
   * F7 : stack clean & build
   * F8 : stack test
+  * F9 : put bp on current line
+  * Shift + F9 : put bp on current column
+* While debugging, you can use F5, F9, F10, F11 shortcut key.
+  * F5 : jump to next bp
+  * F9 : put bp on the line
+  * Shift + F9 : put bp on the column
+  * F10 : step next
+  * F11 : step into
 
 
 ## Install
@@ -43,14 +57,19 @@
     % where $path:phoityne-vscode.exe
     C:\Users\[user name]\AppData\Roaming\local\bin\phoityne-vscode.exe
     
+    % phoityne-vscode --version
+    phoityne-vscode-0.0.13.0
     %
+    % code
 
 
+
 ### Install vscode extensions
 
-1. open Extensions from side menu of VSCode.
-2. search "haskell" 
-3. select "[Haskell GHCi debug viewer Phoityne](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)"
+1. run VSCode and open stack project __Folder__ from file menu. 
+2. open Extensions from side menu of VSCode.
+3. search "haskell" 
+4. select "[__Haskell GHCi debug viewer Phoityne__](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)"
 
   
   
@@ -113,6 +132,7 @@
 * supportsRestartRequest : no
 * supportsExceptionOptions : no
 * supportsValueFormattingOptions : no
+* supportsExceptionInfoRequest : no
 
 ## Configuration
 
@@ -121,8 +141,9 @@
 |NAME|REQUIRED OR OPTIONAL|DEFAULT SETTING|DESCRIPTION|
 |:--|:--:|:--|:--|
 |startup|required|${workspaceRoot}/test/Spec.hs|debug startup file, will be loaded automatically.|
-|ghciCmd|required|stack ghci --test --no-load --no-build --main-is TARGET|launch ghci command, must be Prelude module loaded. For example, "ghci -i${workspaceRoot}/src", "cabal exec -- ghci -i${workspaceRoot}/src"|
+|ghciCmd|required|stack ghci --test --no-load --no-build --main-is TARGET --ghci-options -fprint-evld-with-show|launch ghci command, must be Prelude module loaded. For example, "ghci -i${workspaceRoot}/src", "cabal exec -- ghci -i${workspaceRoot}/src"|
 |ghciPrompt|required|H>>=|ghci command prompt string.|
+|stopOnEntry|required|true|stop or not after debugger launched.
 |logFile|required|${workspaceRoot}/.vscode/phoityne.log|internal log file.|
 |logLevel|required|WARNING|internal log level.|
 
@@ -137,6 +158,10 @@
 
 
 ## Version history
+
+* [2017/02/05] phoityne-vscode released.  
+  * Marketplace [phoityne-vscode-0.0.10](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)
+  * hackage [phoityne-vscode-0.0.12.0](https://hackage.haskell.org/package/phoityne-vscode)  
 
 * [2016/12/18] phoityne-vscode released.  
   * Marketplace [phoityne-vscode-0.0.9](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)
diff --git a/app/Phoityne/GHCi/IO/Command.hs b/app/Phoityne/GHCi/IO/Command.hs
--- a/app/Phoityne/GHCi/IO/Command.hs
+++ b/app/Phoityne/GHCi/IO/Command.hs
@@ -80,6 +80,10 @@
 
 -- |
 --
+type ColNo = Int
+
+-- |
+--
 type BreakId = Int
 
 -- |
@@ -136,10 +140,6 @@
 
     setPrompt2 ghci@(GHCiProcess _ _ _ _ pmt) = set ghci outHdl ("prompt2 \"" ++ pmt ++ "\"") >>= \case
       Left err -> return $ Left err
-      Right _  -> setPrintEval ghci
-
-    setPrintEval ghci = set ghci outHdl "-fprint-evld-with-show" >>= \case
-      Left err -> return $ Left err
       Right _  -> return $ Right ghci
 
     endOfStartMsg msg
@@ -241,9 +241,10 @@
          -> OutputHandler
          -> ModuleName
          -> LineNo
-         -> IO (Either ErrorData BreakId)
-setBreak ghci outHdl modName lineNo = do
-  let cmd = ":break " ++ modName ++ " " ++ show lineNo
+         -> ColNo
+         -> IO (Either ErrorData (BreakId, SourcePosition))
+setBreak ghci outHdl modName lineNo col = do
+  let cmd = ":break " ++ modName ++ " " ++ show lineNo ++ (if (-1) == col then "" else " " ++ show col)
   exec ghci outHdl cmd >>= \case
     Left err -> return $ Left err
     Right msg -> getBreakId msg
@@ -254,9 +255,10 @@
       Left  err -> return $ Left $ "unexpected break set result. " ++ show err ++ msg
 
     getBreakIdParser = do
-      _ <- manyTill anyChar (string "Breakpoint ")
-      no <- manyTill digit (string " activated at")
-      return $ read no
+      _   <- manyTill anyChar (string "Breakpoint ")
+      no  <- manyTill digit (string " activated at ")
+      pos <- parsePosition
+      return (read no, pos)
 
 -- |
 --
diff --git a/app/Phoityne/VSCode/IO/Core.hs b/app/Phoityne/VSCode/IO/Core.hs
--- a/app/Phoityne/VSCode/IO/Core.hs
+++ b/app/Phoityne/VSCode/IO/Core.hs
@@ -123,6 +123,7 @@
   , modifiedDebugContextData                :: Bool
   , ghciProcessDebugContextData             :: Maybe G.GHCiProcess
   , responseHandlerDebugContextData         :: BSL.ByteString -> IO ()
+  , stopOnEntryDebugContextData             :: Bool
   }
 
 
@@ -132,8 +133,7 @@
 data BreakPointData =
   BreakPointData {
     nameBreakPointData :: String
-  , filePathBreakPointData     :: FilePath
-  , lineNoBreakPointData       :: Int
+  , srcPosBreakPointData       :: G.SourcePosition
   , breakNoBreakPointData      :: Maybe Int
   , conditionBreakPointData    :: Maybe String
   , hitConditionBreakPointData :: Maybe String
@@ -144,7 +144,7 @@
 -- |
 --  
 -- 
-type BreakPointDataKey = (FilePath, Int)
+type BreakPointDataKey = G.SourcePosition
 
 -- |
 --  
@@ -155,7 +155,7 @@
 --  
 -- 
 getBreakPointKey :: BreakPointData -> BreakPointDataKey
-getBreakPointKey bp = (filePathBreakPointData bp, lineNoBreakPointData bp)
+getBreakPointKey = srcPosBreakPointData
 
 
 -- |
@@ -275,14 +275,20 @@
 --
 --
 defaultDebugContextData :: DebugContextData
-defaultDebugContextData = DebugContextData _INITIAL_RESPONSE_SEQUENCE (MAP.fromList []) (MAP.fromList []) "" "" False Nothing 0 False Nothing BSL.putStr
-
--- |
---
---
-getKeyOfSourcePosition :: G.SourcePosition -> BreakPointDataKey
-getKeyOfSourcePosition (G.SourcePosition file line _ _ _) = (file, line)
-
+defaultDebugContextData = DebugContextData {
+    resSeqDebugContextData                  = _INITIAL_RESPONSE_SEQUENCE
+  , functionBreakPointDatasDebugContextData = MAP.fromList []
+  , breakPointDatasDebugContextData         = MAP.fromList []
+  , workspaceDebugContextData               = ""
+  , startupDebugContextData                 = ""
+  , debugStartedDebugContextData            = False
+  , debugStoppedPosDebugContextData         = Nothing
+  , currentFrameIdDebugContextData          = 0
+  , modifiedDebugContextData                = False
+  , ghciProcessDebugContextData             = Nothing
+  , responseHandlerDebugContextData         = BSL.putStr
+  , stopOnEntryDebugContextData             = False
+  }
 
 
 -- |=====================================================================
@@ -534,8 +540,9 @@
   -- コンテキストデータの保持
   ctx <- takeMVar mvarCtx
   putMVar mvarCtx ctx {
-      workspaceDebugContextData = J.workspaceLaunchRequestArguments args
-    , startupDebugContextData   = J.startupLaunchRequestArguments args
+      workspaceDebugContextData   = J.workspaceLaunchRequestArguments args
+    , startupDebugContextData     = J.startupLaunchRequestArguments args
+    , stopOnEntryDebugContextData = J.stopOnEntryLaunchRequestArguments args
     }
 
   -- ロギング設定
@@ -632,11 +639,16 @@
       resSeq <- getIncreasedResponseSequence mvarCtx
       sendResponse mvarCtx $ J.encode $ J.defaultConfigurationDoneResponse resSeq req
 
+      stopOnEntryDebugContextData <$> (readMVar mvarCtx) >>= stopOnEntry 
+
+    stopOnEntry False = proceedDebug mvarCtx
+    stopOnEntry True = do
       resSeq <- getIncreasedResponseSequence mvarCtx
       let stopEvt    = J.defaultStoppedEvent resSeq
           stopEvtStr = J.encode stopEvt
       sendEvent mvarCtx stopEvtStr
 
+
 -- |
 --
 disconnectRequestHandler :: MVar DebugContextData -> J.DisconnectRequest -> IO ()
@@ -695,11 +707,10 @@
       sendResponse mvarCtx $ J.encode $ J.errorSetBreakpointsResponse resSeq req msg 
       sendErrorEvent mvarCtx msg
 
-    convBp cwd path (J.SourceBreakpoint lineNo _ cond hitCond) =
+    convBp cwd path (J.SourceBreakpoint lineNo colNo cond hitCond) =
       BreakPointData {
         nameBreakPointData       = src2mod cwd path
-      , filePathBreakPointData   = path
-      , lineNoBreakPointData     = lineNo
+      , srcPosBreakPointData     = G.SourcePosition path lineNo (maybe (-1) id colNo) (-1) (-1)
       , breakNoBreakPointData    = Nothing
       , conditionBreakPointData  = normalizeCond cond
       , hitConditionBreakPointData = hitCond
@@ -714,8 +725,8 @@
     delete path = do
       ctx <- takeMVar mvarCtx
       let bps = breakPointDatasDebugContextData ctx
-          newBps = MAP.filterWithKey (\(p,_) _-> path /= p) bps
-          delBps = MAP.elems $ MAP.filterWithKey (\(p,_) _-> path == p) bps
+          newBps = MAP.filterWithKey (\(G.SourcePosition p _ _ _ _) _-> path /= p) bps
+          delBps = MAP.elems $ MAP.filterWithKey (\(G.SourcePosition p _ _ _ _) _-> path == p) bps
 
       putMVar mvarCtx ctx{breakPointDatasDebugContextData = newBps}
 
@@ -726,7 +737,7 @@
 
     insert reqBps = do
       results <- mapM insertInternal reqBps
-      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _)) -> verified) results
+      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _ _ _)) -> verified) results
           resData = map snd results
 
       debugM _LOG_NAME $ "add bps:" ++ show addBps
@@ -734,20 +745,25 @@
 
       ctx <- takeMVar mvarCtx
       let bps    = breakPointDatasDebugContextData ctx
-          newBps = foldr (\v@(BreakPointData _ p l _ _ _ _)->MAP.insert (p,l) v) bps $ map fst results
+          newBps = foldr (\v@(BreakPointData _ s _ _ _ _)->MAP.insert s v) bps $ map fst results
       putMVar mvarCtx ctx{breakPointDatasDebugContextData = newBps}
 
       return resData
 
 
-    insertInternal reqBp@(BreakPointData modName filePath lineNo _ _ _ _) = do
-      let src = J.Source (Just modName) filePath Nothing Nothing 
-
+    insertInternal reqBp@(BreakPointData modName (G.SourcePosition filePath lineNo _ _ _) _ _ _ _) =
       addBreakPointOnGHCi mvarCtx reqBp >>= \case
-        Right no -> do
-          --putStrLnStdout mvarCtx $ "set breakpoint on " ++ filePathBreakPointData reqBp ++ ":L" ++ show (lineNoBreakPointData reqBp) 
-          return (reqBp{breakNoBreakPointData = Just no}, J.Breakpoint (Just no) True "" src lineNo 1)
-        Left err -> return (reqBp, J.Breakpoint Nothing False err src lineNo 1)
+        Right (no, srcPos@(G.SourcePosition path sl sc el ec)) ->
+          return (reqBp{ breakNoBreakPointData   = Just no
+                       , srcPosBreakPointData    = srcPos
+                       },
+                  J.Breakpoint (Just no) True ""
+                    (J.Source (Just modName) path Nothing Nothing) sl sc el ec)
+        Left err ->
+          return (reqBp,
+                  J.Breakpoint Nothing False err
+                    (J.Source (Just modName) filePath Nothing Nothing)
+                    lineNo (-1) lineNo (-1))
 
 -- |
 --
@@ -778,8 +794,7 @@
     convBp (J.FunctionBreakpoint name cond hitCond) =
       BreakPointData {
         nameBreakPointData         = name
-      , filePathBreakPointData     = ""
-      , lineNoBreakPointData       = -1
+      , srcPosBreakPointData       = G.SourcePosition "" (-1) (-1) (-1) (-1)
       , breakNoBreakPointData      = Nothing
       , conditionBreakPointData    = normalizeCond cond
       , hitConditionBreakPointData = hitCond
@@ -805,7 +820,7 @@
 
     insert reqBps = do
       results <- mapM insertInternal reqBps
-      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _)) -> verified) results
+      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _ _ _)) -> verified) results
           resData = map snd results
 
       debugM _LOG_NAME $ "add funBPs:" ++ show addBps
@@ -813,22 +828,20 @@
 
       ctx <- takeMVar mvarCtx
       let bps    = functionBreakPointDatasDebugContextData ctx
-          newBps = foldr (\v@(BreakPointData _ p l _ _ _ _)->MAP.insert (p,l) v) bps $ map fst results
+          newBps = foldr (\v@(BreakPointData _ s _ _ _ _)->MAP.insert s v) bps $ map fst results
       putMVar mvarCtx ctx{functionBreakPointDatasDebugContextData = newBps}
 
       return resData
 
 
-    insertInternal reqBp@(BreakPointData funcName _ _ _ _ _ _) = do
+    insertInternal reqBp@(BreakPointData funcName _ _ _ _ _) = do
       addFunctionBreakPointOnGHCi mvarCtx reqBp >>= \case
-        Right (no, (G.SourcePosition path sl sc _ _)) -> do
-          --putStrLnStdout mvarCtx $ "set breakpoint on " ++ filePathBreakPointData reqBp ++ ":L" ++ show (lineNoBreakPointData reqBp) 
-          return ( reqBp{ breakNoBreakPointData  = Just no
-                        , filePathBreakPointData = path
-                        , lineNoBreakPointData   = sl
+        Right (no, srcPos@(G.SourcePosition path sl sc el ec)) -> do
+          return ( reqBp{ breakNoBreakPointData   = Just no
+                        , srcPosBreakPointData    = srcPos
                         }
-                 , J.Breakpoint (Just no) True "" (J.Source (Just funcName) path Nothing Nothing) sl sc)
-        Left err -> return (reqBp, J.Breakpoint Nothing False err (J.Source (Just funcName) "" Nothing Nothing) (-1) (-1))
+                 , J.Breakpoint (Just no) True "" (J.Source (Just funcName) path Nothing Nothing) sl sc el ec)
+        Left err -> return (reqBp, J.Breakpoint Nothing False err (J.Source (Just funcName) "" Nothing Nothing) (-1) (-1) (-1) (-1))
 
 -- |
 --
@@ -1297,7 +1310,7 @@
 
   where
     startUpperCase modName 
-      | null modName = True
+      | null modName = False
       | otherwise = isUpper $ head modName
 
 
@@ -1358,7 +1371,7 @@
 --  ブレークポイントをGHCi上でdeleteする
 --
 deleteBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO ()
-deleteBreakPointOnGHCi mvarCtx bp@(BreakPointData _ _ _ (Just breakNo) _ _ _) = 
+deleteBreakPointOnGHCi mvarCtx bp@(BreakPointData _ _ (Just breakNo) _ _ _) = 
   ghciProcessDebugContextData <$> (readMVar mvarCtx) >>= \case
     Nothing -> sendErrorEvent mvarCtx $ "[deleteBreakPointOnGHCi] ghci not started. " ++ show bp
     Just ghciProc -> G.delete ghciProc outHdl breakNo >>= withResult
@@ -1374,13 +1387,13 @@
 -- |
 --  GHCi上でブレークポイントを追加する
 --
-addBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO (Either String Int)
-addBreakPointOnGHCi mvarCtx bp@(BreakPointData modName _ lineNo _ _ _ _) =
+addBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO (Either String (Int, G.SourcePosition))
+addBreakPointOnGHCi mvarCtx bp@(BreakPointData modName (G.SourcePosition _ lineNo col _ _) _ _ _ _) =
   ghciProcessDebugContextData <$> (readMVar mvarCtx) >>= \case
     Nothing -> do
       errorM _LOG_NAME $ "[addBreakPointOnGHCi] ghci not started. " ++ show bp
       return $ Left $ "[addBreakPointOnGHCi] ghci not started. " ++ show bp
-    Just ghciProc -> G.setBreak ghciProc outHdl modName lineNo
+    Just ghciProc -> G.setBreak ghciProc outHdl modName lineNo col
   
   where
     outHdl = sendStdoutEvent mvarCtx
@@ -1389,7 +1402,7 @@
 --  GHCi上で関数ブレークポイントを追加する
 --
 addFunctionBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO (Either String (Int, G.SourcePosition))
-addFunctionBreakPointOnGHCi mvarCtx bp@(BreakPointData name _ _ _ _ _ _) =
+addFunctionBreakPointOnGHCi mvarCtx bp@(BreakPointData name _ _ _ _ _) =
   ghciProcessDebugContextData <$> (readMVar mvarCtx) >>= \case
     Nothing -> do
       errorM _LOG_NAME $ "[addFunctionBreakPointOnGHCi] ghci not started. " ++ show bp
@@ -1577,13 +1590,12 @@
 findBreakPointType mvarCtx pos = do
   ctx <- readMVar mvarCtx
 
-  let bpKey = getKeyOfSourcePosition pos
-      bpMap = breakPointDatasDebugContextData ctx
+  let bpMap = breakPointDatasDebugContextData ctx
       funcMap = functionBreakPointDatasDebugContextData ctx
 
-  case MAP.lookup bpKey bpMap of
+  case MAP.lookup pos bpMap of
     Just bp -> return $ SourceBreakPoint bp
-    Nothing -> case MAP.lookup bpKey funcMap of
+    Nothing -> case MAP.lookup pos funcMap of
       Just bp -> return $ FunctionBreakPoint bp
       Nothing -> return UnknownBreakPoint
 
@@ -1614,10 +1626,10 @@
 -- |
 --
 breakOrContinueByCondition :: MVar DebugContextData -> BreakPointData -> IO BreakOrContinueType
-breakOrContinueByCondition _ (BreakPointData _ _ _ _ Nothing Nothing _) = return DoBreak
-breakOrContinueByCondition _ (BreakPointData _ _ _ _ Nothing (Just hitCond) hitCount) = breakOrContinueByHitCount hitCond hitCount
-breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ _ (Just condStr) Nothing _) = breakOrContinueByOpCond mvarCtx condStr
-breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ _ (Just condStr) (Just hitCond) hitCount) =
+breakOrContinueByCondition _ (BreakPointData _ _ _ Nothing Nothing _) = return DoBreak
+breakOrContinueByCondition _ (BreakPointData _ _ _ Nothing (Just hitCond) hitCount) = breakOrContinueByHitCount hitCond hitCount
+breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ (Just condStr) Nothing _) = breakOrContinueByOpCond mvarCtx condStr
+breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ (Just condStr) (Just hitCond) hitCount) =
   breakOrContinueByHitCount hitCond hitCount >>= \case
     DoError m  -> return $ DoError m
     DoContinue -> return DoContinue
diff --git a/app/Phoityne/VSCode/TH/BreakpointJSON.hs b/app/Phoityne/VSCode/TH/BreakpointJSON.hs
--- a/app/Phoityne/VSCode/TH/BreakpointJSON.hs
+++ b/app/Phoityne/VSCode/TH/BreakpointJSON.hs
@@ -12,12 +12,14 @@
 --
 data Breakpoint =
   Breakpoint {
-    idBreakpoint       :: Maybe Int -- An optional unique identifier for the breakpoint.
-  , verifiedBreakpoint :: Bool      -- If true breakpoint could be set (but not necessarily at the desired location).
-  , messageBreakpoint  :: String    -- An optional message about the state of the breakpoint. This is shown to the user and can be used to explain why a breakpoint could not be verified.
-  , sourceBreakpoint   :: Source    -- The source where the breakpoint is located.
-  , lineBreakpoint     :: Int       -- The actual line of the breakpoint.
-  , columnBreakpoint   :: Int       -- The actual column of the breakpoint.
+    idBreakpoint        :: Maybe Int -- An optional unique identifier for the breakpoint.
+  , verifiedBreakpoint  :: Bool      -- If true breakpoint could be set (but not necessarily at the desired location).
+  , messageBreakpoint   :: String    -- An optional message about the state of the breakpoint. This is shown to the user and can be used to explain why a breakpoint could not be verified.
+  , sourceBreakpoint    :: Source    -- The source where the breakpoint is located.
+  , lineBreakpoint      :: Int       -- The actual line of the breakpoint.
+  , columnBreakpoint    :: Int       -- The actual column of the breakpoint.
+  , endLineBreakpoint   :: Int       -- An optional end line of the actual range covered by the breakpoint.
+  , endColumnBreakpoint :: Int       -- n optional end column of the actual range covered by the breakpoint. If no end line is given, then the end column is assumed to be in the start line.
   } deriving (Show, Read, Eq)
 
 $(deriveJSON defaultOptions { fieldLabelModifier = rdrop (length "Breakpoint") } ''Breakpoint)
diff --git a/app/Phoityne/VSCode/TH/LaunchRequestArgumentsJSON.hs b/app/Phoityne/VSCode/TH/LaunchRequestArgumentsJSON.hs
--- a/app/Phoityne/VSCode/TH/LaunchRequestArgumentsJSON.hs
+++ b/app/Phoityne/VSCode/TH/LaunchRequestArgumentsJSON.hs
@@ -12,16 +12,17 @@
 --
 data LaunchRequestArguments =
   LaunchRequestArguments {
-    noDebugLaunchRequestArguments    :: Maybe Bool --  If noDebug is true the launch request should launch the program without enabling debugging.
-  , nameLaunchRequestArguments       :: String     -- Phoityne specific argument. required.
-  , typeLaunchRequestArguments       :: String     -- Phoityne specific argument. required.
-  , requestLaunchRequestArguments    :: String     -- Phoityne specific argument. required. must be "request"
-  , startupLaunchRequestArguments    :: String     -- Phoityne specific argument. required.
-  , workspaceLaunchRequestArguments  :: String     -- Phoityne specific argument. required.
-  , logFileLaunchRequestArguments    :: String     -- Phoityne specific argument. required.
-  , logLevelLaunchRequestArguments   :: String     -- Phoityne specific argument. required.
-  , ghciPromptLaunchRequestArguments :: String     -- Phoityne specific argument. required.
-  , ghciCmdLaunchRequestArguments    :: String     -- Phoityne specific argument. required.
+    noDebugLaunchRequestArguments      :: Maybe Bool -- If noDebug is true the launch request should launch the program without enabling debugging.
+  , nameLaunchRequestArguments         :: String     -- Phoityne specific argument. required.
+  , typeLaunchRequestArguments         :: String     -- Phoityne specific argument. required.
+  , requestLaunchRequestArguments      :: String     -- Phoityne specific argument. required. must be "request"
+  , startupLaunchRequestArguments      :: String     -- Phoityne specific argument. required.
+  , workspaceLaunchRequestArguments    :: String     -- Phoityne specific argument. required.
+  , logFileLaunchRequestArguments      :: String     -- Phoityne specific argument. required.
+  , logLevelLaunchRequestArguments     :: String     -- Phoityne specific argument. required.
+  , ghciPromptLaunchRequestArguments   :: String     -- Phoityne specific argument. required.
+  , ghciCmdLaunchRequestArguments      :: String     -- Phoityne specific argument. required.
+  , stopOnEntryLaunchRequestArguments  :: Bool       -- Phoityne specific argument. required.
   } deriving (Show, Read, Eq)
 
 
diff --git a/phoityne-vscode.cabal b/phoityne-vscode.cabal
--- a/phoityne-vscode.cabal
+++ b/phoityne-vscode.cabal
@@ -1,5 +1,5 @@
 name:                  phoityne-vscode
-version:               0.0.12.0
+version:               0.0.13.0
 synopsis:              ghci debug viewer on Visual Studio Code
 description:           Please see README.md
 license:               BSD3
