diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -33,6 +33,9 @@
         - [Due Dates](#due-dates)
     - [Theming](#theming)
 - [Roadmap](#roadmap)
+- [Contributing](#contributing)
+    - [Core Contributors](#core-contributors)
+- [Acknowledgements](#acknowledgements)
 
 ## Installation
 
@@ -342,11 +345,18 @@
 
 See [roadmap.md](https://github.com/smallhadroncollider/taskell/blob/develop/roadmap.md) for planned features
 
-### Contributing
+---
 
+## Contributing
+
 Please check the [roadmap.md](https://github.com/smallhadroncollider/taskell/blob/develop/roadmap.md) before adding any bugs/feature requests to Issues.
 
 Anyone is welcome to contribute to the project, but please read through [CONTRIBUTING.md](https://github.com/smallhadroncollider/taskell/blob/master/CONTRIBUTING.md) and make sure that you agree with the [Code of Conduct](https://github.com/smallhadroncollider/taskell/blob/master/CODE_OF_CONDUCT.md) before getting involved.
+
+### Core Contributors
+
+- Mark Wales ([@smallhadroncollider](https://github.com/smallhadroncollider))
+- Ali Ahmed ([@AliNisarAhmed](https://github.com/AliNisarAhmed))
 
 ---
 
diff --git a/src/Taskell/Data/Task.hs b/src/Taskell/Data/Task.hs
--- a/src/Taskell/Data/Task.hs
+++ b/src/Taskell/Data/Task.hs
@@ -4,20 +4,22 @@
 
 import ClassyPrelude
 
-import Control.Lens (ix, makeLenses, (%~), (&), (.~), (?~), (^.), (^?))
+import Control.Lens ((%~), (&), (.~), (?~), (^.), (^?), ix, makeLenses)
 
-import           Data.Sequence        as S (adjust', deleteAt, (|>))
-import           Data.Text            (strip)
-import           Data.Time.Zones      (TZ)
-import           Taskell.Data.Date    (Due (..), inputToTime)
+import Data.Sequence as S ((|>), adjust', deleteAt, insertAt)
+import Data.Text (strip)
+import Data.Time.Zones (TZ)
+import Taskell.Data.Date (Due(..), inputToTime)
 import qualified Taskell.Data.Subtask as ST (Subtask, Update, complete, duplicate, name)
 
-data Task = Task
-    { _name        :: Text
-    , _description :: Maybe Text
-    , _subtasks    :: Seq ST.Subtask
-    , _due         :: Maybe Due
-    } deriving (Show, Eq)
+data Task =
+    Task
+        { _name :: Text
+        , _description :: Maybe Text
+        , _subtasks :: Seq ST.Subtask
+        , _due :: Maybe Due
+        }
+    deriving (Show, Eq)
 
 type Update = Task -> Task
 
@@ -43,7 +45,7 @@
 
 maybeAppend :: Text -> Maybe Text -> Maybe Text
 maybeAppend text (Just current) = Just (concat [current, "\n", text])
-maybeAppend text Nothing        = Just text
+maybeAppend text Nothing = Just text
 
 appendDescription :: Text -> Update
 appendDescription text =
@@ -62,6 +64,9 @@
 
 getSubtask :: Int -> Task -> Maybe ST.Subtask
 getSubtask idx = (^? subtasks . ix idx)
+
+addSubtaskAtIndex :: Int -> ST.Subtask -> Update
+addSubtaskAtIndex idx subtask = subtasks %~ S.insertAt idx subtask
 
 addSubtask :: ST.Subtask -> Update
 addSubtask subtask = subtasks %~ (|> subtask)
diff --git a/src/Taskell/Events/Actions/Modal/Detail.hs b/src/Taskell/Events/Actions/Modal/Detail.hs
--- a/src/Taskell/Events/Actions/Modal/Detail.hs
+++ b/src/Taskell/Events/Actions/Modal/Detail.hs
@@ -7,14 +7,14 @@
 
 import ClassyPrelude
 
-import           Graphics.Vty.Input.Events
-import           Taskell.Events.Actions.Types      as A (ActionType (..))
-import           Taskell.Events.State              (clearDate, normalMode, quit, store, undo, write)
-import           Taskell.Events.State.Modal.Detail as Detail
-import           Taskell.Events.State.Types
-import           Taskell.Events.State.Types.Mode   (DetailItem (..), DetailMode (..))
-import           Taskell.IO.Keyboard.Types         (Actions)
-import qualified Taskell.UI.Draw.Field             as F (event)
+import Graphics.Vty.Input.Events
+import Taskell.Events.Actions.Types as A (ActionType(..))
+import Taskell.Events.State (clearDate, normalMode, quit, store, undo, write)
+import Taskell.Events.State.Modal.Detail as Detail
+import Taskell.Events.State.Types
+import Taskell.Events.State.Types.Mode (DetailItem(..), DetailMode(..))
+import Taskell.IO.Keyboard.Types (Actions)
+import qualified Taskell.UI.Draw.Field as F (event)
 
 events :: Actions
 events
@@ -27,6 +27,8 @@
     , (A.MoveUp, (write =<<) . (up =<<) . store)
     , (A.MoveDown, (write =<<) . (down =<<) . store)
     , (A.New, (Detail.insertMode =<<) . (Detail.lastSubtask =<<) . (Detail.newItem =<<) . store)
+    , (A.NewAbove, Detail.newAbove)
+    , (A.NewBelow, Detail.newBelow)
     , (A.Edit, (Detail.insertMode =<<) . store)
     , (A.Complete, (write =<<) . (setComplete =<<) . store)
     , (A.Delete, (write =<<) . (Detail.remove =<<) . store)
@@ -37,28 +39,26 @@
 
 normal :: Event -> Stateful
 normal (EvKey KEsc _) = normalMode
-normal _              = pure
+normal _ = pure
 
 insert :: Event -> Stateful
 insert (EvKey KEsc _) s = do
     item <- getCurrentItem s
     case item of
         DetailDescription -> (write =<<) $ finishDescription s
-        DetailDate        -> showDetail s
-        (DetailItem _)    -> (write =<<) . (showDetail =<<) $ finishSubtask s
+        DetailDate -> showDetail s
+        (DetailItem _) -> (write =<<) . (showDetail =<<) $ finishSubtask s
 insert (EvKey KEnter _) s = do
     item <- getCurrentItem s
     case item of
         DetailDescription -> (write =<<) $ finishDescription s
         DetailDate -> (write =<<) $ finishDue s
-        (DetailItem _) ->
-            (Detail.lastSubtask =<<) . (Detail.newItem =<<) . (store =<<) . (write =<<) $
-            finishSubtask s
+        (DetailItem _) -> (Detail.newBelow =<<) . (write =<<) $ finishSubtask s
 insert e s = updateField (F.event e) s
 
 event :: Event -> Stateful
 event e s = do
     m <- getCurrentMode s
     case m of
-        DetailNormal     -> normal e s
+        DetailNormal -> normal e s
         (DetailInsert _) -> insert e s
diff --git a/src/Taskell/Events/Actions/Modal/Help.hs b/src/Taskell/Events/Actions/Modal/Help.hs
--- a/src/Taskell/Events/Actions/Modal/Help.hs
+++ b/src/Taskell/Events/Actions/Modal/Help.hs
@@ -1,14 +1,12 @@
 {-# LANGUAGE OverloadedLists #-}
 
 module Taskell.Events.Actions.Modal.Help
-  ( event,
-    events,
-  )
-where
+    ( event
+    , events
+    ) where
 
-import ClassyPrelude
 import Graphics.Vty.Input.Events
-import Taskell.Events.Actions.Types as A (ActionType (..))
+import Taskell.Events.Actions.Types as A (ActionType(..))
 import Taskell.Events.State
 import Taskell.Events.State.Modal.Help (moveHelpMenuDown, moveHelpMenuUp)
 import Taskell.Events.State.Types (Stateful)
@@ -16,12 +14,12 @@
 
 events :: Actions
 events =
-  [ (A.Quit, quit),
-    (A.MoveUp, moveHelpMenuUp),
-    (A.Next, moveHelpMenuUp),
-    (A.MoveDown, moveHelpMenuDown),
-    (A.Previous, moveHelpMenuDown)
-  ]
+    [ (A.Quit, quit)
+    , (A.MoveUp, moveHelpMenuUp)
+    , (A.Next, moveHelpMenuUp)
+    , (A.MoveDown, moveHelpMenuDown)
+    , (A.Previous, moveHelpMenuDown)
+    ]
 
 event :: Event -> Stateful
 event _ = normalMode
diff --git a/src/Taskell/Events/State/Modal/Detail.hs b/src/Taskell/Events/State/Modal/Detail.hs
--- a/src/Taskell/Events/State/Modal/Detail.hs
+++ b/src/Taskell/Events/State/Modal/Detail.hs
@@ -6,6 +6,7 @@
     , showDetail
     , getCurrentItem
     , getCurrentMode
+    , getCurrentSubtask
     , getField
     , setComplete
     , remove
@@ -13,29 +14,58 @@
     , editDescription
     , editDue
     , newItem
+    , newItemAtIndex
     , nextSubtask
     , previousSubtask
     , lastSubtask
+    , subTaskAtIndex
     , up
     , down
+    , newAbove
+    , newBelow
     ) where
 
 import ClassyPrelude
 
 import Control.Lens ((&), (.~), (^.))
 
-import           Taskell.Data.Date               (timeToDisplay)
-import qualified Taskell.Data.Seq                as S
-import qualified Taskell.Data.Subtask            as ST (blank, name, toggle)
-import           Taskell.Data.Task               (Task, addSubtask, countSubtasks, description, due,
-                                                  getSubtask, removeSubtask, setDescription, setDue,
-                                                  subtasks, updateSubtask)
-import           Taskell.Events.State            (getCurrentTask, setCurrentTask)
-import           Taskell.Events.State.Types      (State, Stateful, mode, time, timeZone)
-import           Taskell.Events.State.Types.Mode (DetailItem (..), DetailMode (..),
-                                                  ModalType (Detail), Mode (Modal))
-import           Taskell.UI.Draw.Field           (Field, blankField, getText, textToField)
+import Taskell.Data.Date (timeToDisplay)
+import qualified Taskell.Data.Seq as S
+import qualified Taskell.Data.Subtask as ST (blank, name, toggle)
+import Taskell.Data.Task
+    ( Task
+    , addSubtask
+    , addSubtaskAtIndex
+    , countSubtasks
+    , description
+    , due
+    , getSubtask
+    , removeSubtask
+    , setDescription
+    , setDue
+    , subtasks
+    , updateSubtask
+    )
+import Taskell.Events.State (getCurrentTask, setCurrentTask, store)
+import Taskell.Events.State.Types (State, Stateful, mode, time, timeZone)
+import Taskell.Events.State.Types.Mode
+    ( DetailItem(..)
+    , DetailMode(..)
+    , ModalType(Detail)
+    , Mode(Modal)
+    )
+import Taskell.UI.Draw.Field (Field, blankField, getText, textToField)
 
+newAbove :: Stateful
+newAbove state = do
+    idx <- getCurrentSubtask state
+    store state >>= newItemAtIndex idx >>= subTaskAtIndex idx >>= insertMode
+
+newBelow :: Stateful
+newBelow state = do
+    idx <- (+ 1) <$> getCurrentSubtask state
+    store state >>= newItemAtIndex idx >>= subTaskAtIndex idx >>= insertMode
+
 updateField :: (Field -> Field) -> Stateful
 updateField fieldEvent s =
     pure $
@@ -78,25 +108,25 @@
 getCurrentSubtask state =
     case state ^. mode of
         Modal (Detail (DetailItem i) _) -> Just i
-        _                               -> Nothing
+        _ -> Nothing
 
 getCurrentItem :: State -> Maybe DetailItem
 getCurrentItem state =
     case state ^. mode of
         Modal (Detail item _) -> Just item
-        _                     -> Nothing
+        _ -> Nothing
 
 getCurrentMode :: State -> Maybe DetailMode
 getCurrentMode state =
     case state ^. mode of
         Modal (Detail _ m) -> Just m
-        _                  -> Nothing
+        _ -> Nothing
 
 getField :: State -> Maybe Field
 getField state =
     case state ^. mode of
         Modal (Detail _ (DetailInsert f)) -> Just f
-        _                                 -> Nothing
+        _ -> Nothing
 
 setComplete :: Stateful
 setComplete state = do
@@ -139,6 +169,11 @@
     task <- addSubtask ST.blank <$> getCurrentTask state
     setCurrentTask task state
 
+newItemAtIndex :: Int -> Stateful
+newItemAtIndex idx state = do
+    task <- addSubtaskAtIndex idx ST.blank <$> getCurrentTask state
+    setCurrentTask task state
+
 -- list navigation
 changeSubtask :: Int -> Stateful
 changeSubtask inc state = do
@@ -150,6 +185,9 @@
 
 previousSubtask :: Stateful
 previousSubtask = changeSubtask (-1)
+
+subTaskAtIndex :: Int -> Stateful
+subTaskAtIndex idx state = setIndex state idx
 
 lastSubtask :: Stateful
 lastSubtask state = lastIndex state >>= setIndex state
diff --git a/taskell.cabal b/taskell.cabal
--- a/taskell.cabal
+++ b/taskell.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               taskell
-version:            1.11.2
+version:            1.11.3
 license:            BSD3
 license-file:       LICENSE
 copyright:          2019 Mark Wales
