diff --git a/ChangeLog.md b/ChangeLog.md
deleted file mode 100644
--- a/ChangeLog.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Changelog for Monadoro
-
-1. Switch to literate Haskell in library.
-
-## Unreleased changes
diff --git a/Monadoro.cabal b/Monadoro.cabal
--- a/Monadoro.cabal
+++ b/Monadoro.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 653a2abf4fa16463894ecf07ecb4a16eb86a20534df5d73e02b76c8419c18b46
+-- hash: 924fd821c4ec1f5d5265fc59902a3058d01b0e57e4c3a131948ce2e4ff3533f1
 
 name:           Monadoro
-version:        0.1.2.0
+version:        0.2.0.0
 synopsis:       A minimalistic CLI Pomodoro timer, based on a library of the same purpose.
 description:    Please see the README on GitLab at <https://gitlab.com/kocielnik/monadoro#readme>
 category:       Tools
@@ -21,7 +21,7 @@
 build-type:     Simple
 extra-source-files:
     README.md
-    ChangeLog.md
+    changelog
 
 source-repository head
   type: git
@@ -30,7 +30,11 @@
 
 library
   exposed-modules:
+      ArgParse
+      Clock
+      FullScreen
       Lib
+      MyHelp
       Pomodoro
       Timer
   other-modules:
@@ -39,7 +43,11 @@
       src
   build-depends:
       ansi-terminal >=0.8 && <1
+    , argparser >=0.3 && <0.4
     , base >=4.7 && <5
+    , doctest >=0.8
+    , ncurses >=0.2
+    , optparse-applicative >=0.14
     , process >=1.6 && <2
     , time >=1.8 && <2
   default-language: Haskell2010
@@ -54,7 +62,11 @@
   build-depends:
       Monadoro
     , ansi-terminal >=0.8 && <1
+    , argparser >=0.3 && <0.4
     , base >=4.7 && <5
+    , doctest >=0.8
+    , ncurses >=0.2
+    , optparse-applicative >=0.14
     , process >=1.6 && <2
     , time >=1.8 && <2
   default-language: Haskell2010
@@ -70,7 +82,11 @@
   build-depends:
       Monadoro
     , ansi-terminal >=0.8 && <1
+    , argparser >=0.3 && <0.4
     , base >=4.7 && <5
+    , doctest >=0.8
+    , ncurses >=0.2
+    , optparse-applicative >=0.14
     , process >=1.6 && <2
     , time >=1.8 && <2
   default-language: Haskell2010
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -3,3 +3,8 @@
 A Pomodoro timer to track work time in 4-pomodoro sessions.
 
 To run, execute `monadoro`.
+
+## Goal
+
+The simplest Pomodoro counter, ready to deploy at once on most command-line platformsto enable you to focus on your work in just a few moments, for weeks to come.
+
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,7 +1,7 @@
 module Main where
 
-import Pomodoro ( worker )
+import ArgParse ( parse_args )
 
 main :: IO ()
-main = worker
+main = parse_args
 
diff --git a/changelog b/changelog
new file mode 100644
--- /dev/null
+++ b/changelog
@@ -0,0 +1,7 @@
+monadoro (2.0.0)
+
+	* Add option for a long (4-pomodoro) session.
+
+monadoro (1.0.0)
+
+	* Initial release.
diff --git a/src/ArgParse.hs b/src/ArgParse.hs
new file mode 100644
--- /dev/null
+++ b/src/ArgParse.hs
@@ -0,0 +1,26 @@
+#!/usr/bin/env stack
+--stack --install-ghc runghc
+
+module ArgParse (parse_args) where
+
+-- Here we will service arguments passed to the program in the simplest manner
+-- possible.
+
+import System.Environment
+import System.Exit
+import Pomodoro (worker)
+import Clock    (countdown)
+
+main = parse_args
+
+parse_args = getArgs >>= parse
+
+parse ["-h"] = usage   >> exit
+parse ["-v"] = version >> exit
+parse ["--session"] = worker
+parse []     = countdown
+
+usage   = putStrLn "Usage: monadoro [-vh] [file ...]"
+version = putStrLn "Monadoro 1.1"
+exit    = exitWith ExitSuccess
+die     = exitWith (ExitFailure 1)
diff --git a/src/Clock.lhs b/src/Clock.lhs
new file mode 100644
--- /dev/null
+++ b/src/Clock.lhs
@@ -0,0 +1,59 @@
+#!/usr/bin/env stack
+> --stack --install-ghc runghc --package markdown-unlit -- "-pgmL markdown-unlit"
+
+> {-# LANGUAGE OverloadedStrings #-}
+
+This is a simple countdown clock module.
+
+> module Clock (countdown) where
+
+> import Control.Concurrent  (threadDelay)
+> import System.Process      (system, rawSystem)
+> import System.Console.ANSI (clearLine,
+>                             clearFromCursorToScreenEnd,
+>                             setCursorColumn,
+>                             hideCursor,
+>                             showCursor,
+>                             saveCursor,
+>                             restoreCursor)
+> import System.Environment  (getArgs)
+> import System.IO           (hFlush,
+>                             stdout)
+> import Timer               (secToTimestamp)
+>  
+> -- >>> putStrLn "Hello world!"
+> -- Hello world!
+> --
+> -- >>> putStrLn "Test complete!"
+> -- Test complete!
+ 
+> countdown :: IO()
+> countdown = do
+>     wait_seconds $ 25 * 60 + 1
+
+> wait_seconds :: Int -> IO()
+> wait_seconds 0 = do
+>     putStrLn ""
+> wait_seconds n = do
+>     putStr ""
+>     setCursorColumn 0
+>     putStr $ secToTimestamp $ n - 1
+>     hFlush stdout
+>     delay 1
+>     wait_seconds $ n - 1
+
+> delay :: Int -> IO()
+> delay n = del n
+> 
+> del :: Int -> IO()
+> del n = do
+>     threadDelay $ n * 1000 * 1000
+>
+> no_del :: Int -> IO()
+> no_del n = do
+>     return ()
+> 
+> main :: IO()
+> main = do
+>     countdown
+
diff --git a/src/FullScreen.lhs b/src/FullScreen.lhs
new file mode 100644
--- /dev/null
+++ b/src/FullScreen.lhs
@@ -0,0 +1,58 @@
+> module FullScreen where
+>
+> import Timer (secToTimestamp)
+> import Control.Concurrent (threadDelay)
+> import UI.NCurses
+> import System.IO (
+>                   hFlush,
+>                   stdout)
+> import System.Console.ANSI (clearLine,
+>                             clearFromCursorToScreenEnd,
+>                             setCursorColumn,
+>                             hideCursor,
+>                             showCursor,
+>                             saveCursor,
+>                             restoreCursor,
+>                            )
+>
+> main :: IO ()
+> main = ncurses_clock
+>
+> wait_seconds :: Int -> IO()
+> wait_seconds 0 = do
+>     putStr ""
+> wait_seconds n = do
+>     restoreCursor
+>     putStr $ secToTimestamp $ n - 1
+>     hFlush stdout
+>     delay 1
+>     wait_seconds $ n - 1
+
+> delay :: Int -> IO()
+> delay n = del n
+> 
+> del :: Int -> IO()
+> del n = do
+>     threadDelay $ n * 1000 * 1000
+
+> ncurses_clock :: IO ()
+> ncurses_clock = runCurses $ do
+>     setEcho False
+>     w <- defaultWindow
+>     updateWindow w $ do
+>         moveCursor 1 10
+>         drawString "Hello world!"
+>         moveCursor 3 10
+>         drawString "(press q to quit)"
+>         moveCursor 0 0
+>     render
+>     waitFor w (\ev -> ev == EventCharacter 'q' || ev == EventCharacter 'Q')
+> 
+> waitFor :: Window -> (Event -> Bool) -> Curses ()
+> waitFor w p = loop where
+>     loop = do
+>         ev <- getEvent w Nothing
+>         case ev of
+>             Nothing -> loop
+>             Just ev' -> if p ev' then return () else loop
+> 
diff --git a/src/MyHelp.hs b/src/MyHelp.hs
new file mode 100644
--- /dev/null
+++ b/src/MyHelp.hs
@@ -0,0 +1,4 @@
+module MyHelp (show_help) where
+
+show_help :: IO ()
+show_help = putStrLn "Welcome to Monadoro - your personal Pomodoro counter!"
diff --git a/src/Pomodoro.lhs b/src/Pomodoro.lhs
--- a/src/Pomodoro.lhs
+++ b/src/Pomodoro.lhs
@@ -1,8 +1,3 @@
-#!/usr/bin/env stack
-> --stack --install-ghc runghc --package markdown-unlit -- "-pgmL markdown-unlit"
-
-> {-# LANGUAGE OverloadedStrings #-}
-
 This is a command-line Pomodoro counter.
 
 > module Pomodoro (worker) where
@@ -25,7 +20,16 @@
 >  
 > data Pomodoro = First | Second | Third | Fourth
 >     deriving (Eq, Ord, Show, Read, Bounded, Enum)
->  
+
+> -- | Manage Pomodoro sessions
+> -- Examples:
+> --
+> -- >>> putStrLn "Hello world!"
+> -- Hello world!
+> --
+> -- >>> putStrLn "Test complete!"
+> -- Test complete!
+ 
 > pom m = do
 >     putStr $ show m ++ " pomodoro" ++ " | "
 >     saveCursor
@@ -42,7 +46,7 @@
 > pomodoro Fourth = do
 >     pom Fourth
 >     putStrLn "Take a 30-minute rest now. You just completed 4 pomodoros."
->     putStrLn "Thank you for tracking your time with Haskomodoro."
+>     putStrLn "Thank you for tracking your time with Monadoro."
 > pomodoro m = do
 >     pom m
 >     delay $ 5 * 60
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1,2 +1,4 @@
+import Test.DocTest
+
 main :: IO ()
-main = putStrLn "Test suite not yet implemented"
+main = doctest ["-isrc", "src/Pomodoro.lhs", "src/Clock.lhs", "src/Timer.hs"]
