diff --git a/.res/carbon.png b/.res/carbon.png
index a7bc5a6..ea7a877 100755
Binary files a/.res/carbon.png and b/.res/carbon.png differ
diff --git a/LICENSE b/LICENSE
old mode 100755
new mode 100644
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
index aba5876..bf5273d
--- a/README.md
+++ b/README.md
@@ -2,10 +2,10 @@
 <br>
 <img alt="" src=".res/carbon.png"/>
 
-commandline #notetaking #todomanager for teams/personal: kanbanboard csv-viewer for minimalist productivity hackers.
+commandline kanban #notetaking #todomanager #scriptable for teams AND personal CSV kanban for minimalist productivity hackers.
 
-> WHY: online issuetrackers are great for teams, but how to manage (personal) todo's on a crossrepo- or microlevel? KANBAN.bash is a very simple **powerful** tool to manage and measure productivity. Just store the 
-CSV-file(s) on a repo, clouddrive or server and use it across teams. #symlinksftw!
+> **WHY?** online issuetrackers are great for teams, but how to manage (personal) todo's on a crossrepo-, macro-, or micro-level? This is a very simple **powerful** tool to do that **AND** measure productivity. Just store the 
+CSV-file(s) inside repos, clouddrives and local filesystems. #teamfriendly #symlinktheplanet #nestedkanbans
 
 ## Install
 
@@ -17,6 +17,7 @@ $ chmod 755 kanban
 ## Show me the kanban board!
 
 ```bash
+$ ./kanban init
 $ ./kanban add TODO PERSONAL "buy rose for girlfriend foo bar"
 $ ./kanban show
 ```
@@ -25,20 +26,68 @@ $ ./kanban show
 
 > NOTE: columns are configurable, and board resizes according to terminal width
 
+## Usage 
+
+```bash
+$ ./kanban
+Usage:
+
+  kanban init                             # initialize kanban in current directory
+  kanban add                              # add item interactive (adviced) 
+  kanban show [status] ....               # show ascii kanban board [with status]
+  kanban <id>                             # edit or update item 
+  kanban <id> <status>                    # update status of todo id (uses $EDITOR as preferred editor)
+  kanban <status> .....                   # list only todo items with this status(es)
+  kanban list                             # list all todos (heavy)
+  kanban tags                             # list all submitted tags
+  kanban add <status> <tag> <description> # add item (use quoted strings for args)  
+  kanban stats status [tag]
+  kanban stats tag 
+  kanban stats history 
+  kanban csv                              # edit raw csv
+
+  NOTE #1: statuses can be managed in ~/.kanban/.kanban.conf
+  NOTE #2: the database csv can be found in ~/.kanban/.kanban.csv
+
+Examples:
+
+  kanban add TODO projectX "do foo"
+  kanban TODO DOING HOLD                 
+  kanban stats status projectX
+  kanban stats tag projectX 
+  watch NOCOLOR=1 kanban show
+  # notekeeping by entering a filename as description:
+  echo hello > note.txt && kanban add DOING note.txt
+  # store in github repo
+  git clone https://../foo.git && cd foo.git && kanban init && git add .kanban
+
+Environment:
+
+  X=120 kanban ....         # set max line-width to 120
+  NOCOLOR=1 kanban ....     # disable colors
+  PLAIN=1 kanban ...        # plaintext, disable utf8 chars
+```
+
 ## Change status 
 
 ```bash
 $ ./kanban show
-$ ./kanban 34 DONE
-IN_PROGRESS -> DONE
+.------.              .------.              .-------.
+| TODO |_______       | HOLD |_______       | DOING |_______
+|                     |                     |
+| 1 foobar                                  | 3 ipsum
+| 2 lorem                                   
+
+$ ./kanban 2 DOING
+TODO -> DOING
 ```
 
 ## Edit item 
 
-> NOTE: make sure you have your favorite editor set in ~/.bashrc : 'export EDITOR=vim' etc
+> NOTE: make sure you have your favorite editor set in ~/.bashrc (`export EDITOR=vim` e.g.)
 
 ```bash
-$ ./kanban 34
+$ ./kanban 2        # this executes ${EDITOR} 
 ```
 
 ## Todo grep 
@@ -51,7 +100,7 @@ Nice to get project-specific kanban overviews.
 
 ## Note-taking
 
-> adding a filename as a description, will trigger kanban to open editor:
+> adding a filename as a description, will trigger kanban to launch `$EDITOR`:
 
 ```bash
 $ echo -e "hello\nworld" > my_idea.txt
@@ -96,72 +145,132 @@ Here you can see all todo's which were 'touched' in august 2015
 
 ## Configuration 
 
-see `~/.kanban/.kanban.conf` (gets created automatically).
-You can define the kanban statuses, and limit the maximum amount of todos per status.
+see `~/.kanban/.kanban.conf` (gets created automatically)
+You can define the kanban statuses, and limit the maximum amount of todos per status.<br>
+See `.kanban/kanban.conf` in case you initialized a board in your current dir (using `kanban init`)
 
-## Commandline Overview 
+## Idiotproof csv-editing 
+
+Safest way to keep the CSV sane:
 
 ```bash
-$ ./kanban
-Usage:
+$ ./kanban add
+enter description:
+> do laundry
+enter one of statuses: BACKLOG TODO IN_PROGRESS HOLD DONE
+> TODO
+enter one of tags: projectA, projectB 
+> projectA
+$
+```
 
-  kanban add                              # add item interactive (adviced) 
-  kanban show [status] ....               # show ascii kanban board [with status]
-  kanban <id>                             # edit or update item 
-  kanban <id> <status>                    # update status of todo id (uses $EDITOR as preferred editor)
-  kanban <status> .....                   # list only todo items with this status(es)
-  kanban list                             # list all todos (heavy)
-  kanban tags                             # list all submitted tags
-  kanban add <status> <tag> <description> # add item (use quoted strings for args)  
-  kanban stats status [tag]
-  kanban stats tag 
-  kanban stats history 
+## Responsive kanban.
 
-  NOTE #1: statuses can be managed in ~/.kanban/.kanban.conf
-  NOTE #2: the database csv can be found in ~/.kanban/.kanban.csv
+As mentioned earlier, the status/categorynames can be changed in `.kanban/.kanban.conf`.
+No widescreen? Show a tag-less, simplified kanban board by hiding some categories:
 
-Examples:
+```bash
+XSMALL=119                           # show simplified kanban for terminalwidth < 119 chars
+SMALLSCREEN=('DOING' 'TODO' 'HOLD')  # define simplified kanban board statuses
+```
 
-  kanban add TODO projectX "do foo"
-  kanban TODO DOING HOLD                 
-  kanban stats status projectX
-  kanban stats tag projectX 
-  watch NOCOLOR=1 kanban show
-  # notekeeping by entering a filename as description:
-  echo hello > note.txt && kanban add DOING note.txt
-  # store in github repo
-  git clone https://../foo.git && cd foo.git && kanban init && git add .kanban
+## Nested kanbans
 
-Environment:
+Besides regular tickets, infinite nested kanbans are supported too, as well as adding a kanban as a ticket.
 
-  X=120 kanban ....         # set max line-width to 120
-  NOCOLOR=1 kanban ....     # disable colors
-  PLAIN=1 kanban ...        # plaintext, disable utf8 chars
+```bash
+$ kanban init
+$ mkdir v3           
+$ mkdir v3/v4           
+$ cd v3    && kanban init && kanban add a foo && cd -
+$ cd v3/v4 && kanban init && kanban add b bar && cd -
+$ kanban add TODO dev foobar
+$ cd ..
+$ kanban show
+ .____.
+| TODO |_____
+|
+| 1 #dev foobar
+
+kanbans: 
+   ├─ v3 
+   ├─ v3/v4 
+
+
+$ kanban v3                         # shows v3 kanban 
+ .____.
+| TODO |_____
+|
+| 1 #a foo 
 ```
 
-## Interactive insertion *adviced*
-
-Safest way to keep the CSV sane:
+Now lets add the `v3/v4` kanban as a ticket:
 
 ```bash
-$ ./kanban add
-enter description:
-> do laundry
-enter one of statuses: BACKLOG TODO IN_PROGRESS HOLD DONE
-> TODO
-enter one of tags: projectA, projectB 
->
+$ kanban add TODO foo v3/v4 
+$ kanban show
+ .____.
+| TODO |_____
+|
+| 1 #dev foobar
+| 2 #foo v3/v4 
+
+kanbans: 
+   ├─ v3 
+   ├─ v3/v4 
+
+$ kanban 2            # shows v3/v4 kanban
+ .____.
+| TODO |_____
+|
+| 1 #b bar 
+```
+
+# kanbans in your [dotfiles] GIT-repo + 1 in a projectrepo
+
+```
+$ cd ~                         # go to homedir (where your dotfiles live)
+$ kanban init                  # creates ~/.kanban
+$ cd projects/foo 
+$ kanban init                 
+$ mv .kanban ~/.kanban/foo    
+$ ln -s ~/.kanban/foo .kanban  # link dotfiles-folder to here
+$ cd ~
+$ git add .kanban && git commit -m "dotfiles: updated kanbans"
+$ cd projects/bar
+$ kanban init
+$ git add .kanban && git commit -m "added kanban to project repo"
 ```
 
-## Customized kanban.
+## Scriptable / Kanban Bot
 
-As mentioned earlier, the status/categorynames can be changed in the config-file.
-No widescreen? Show a simplified kanban board by hiding some categories in the `kanban`-bashscript:
+> kanban items are **SCRIPTABLE** using your favorite language. This allows dynamic statuses, tags & descriptions in the CSV-file:
 
 ```bash
-#SMALLSCREEN=('HOLD' 'DOING')   # uncomment to only show these fields in kanban asciiboard
+"$(~/.kanban/bot status_day TODO '1 4')","script","database backup","T","2021-10-04@15:36"
+```
+this will call the following (executable)  shellscript (`~/.kanban/bot`)
+
+```bash
+#!/bin/bash
+status_day(){
+  [[ "$2" =~ $(date +%u) ]] && printf $1 || printf BACKLOG
+}
+
+"$@"
+```
+Profit! <br>The `database backup` item will have status **TODO** on mondays & fridays, otherwise **BACKLOG**<br>
+
+> TIP: use curl to generate dynamic descriptions, for example:
+
+```bash 
+"$(curl https://api.github.com/repos/coderofsalvation/kanban.bash/issues | grep total_count | sed 's/[^0-9]//g') open issues"
 ```
 
+## Blinking text
+
+Just wrap a word with stars (`*iamblinking*` e.g.) in your csv to catch more attention.
+
 ## Attention UNIX ninjas 
 
 > type 'k' instead of './kanban' 
@@ -193,7 +302,7 @@ $ sed -i 's/FOO/BAR/g' ~/.kanban.csv
 > Open a terminal on an extra monitor/screen/tmux:
 
 ```bash
-$ watch kanban show
+$ NOCOLOR=1 watch kanban show
 ```
 
 > Run ninja-commands like: 'k 23 DONE' and withness the update:
@@ -204,6 +313,16 @@ TODO -> DONE
 $ k add TODO NINJW workout" "$(date --date='tomorrow' +'%Y-%m-%d') deadline"
 ```
 
+## Automatically display boards
+
+Put the following in `~/.bashrc` to display boards whenever you enter a directory with a kanban:
+
+```
+cd(){
+  builtin cd ${1:+"$@"} && [[ -d ./.kanban ]] && kanban show
+}
+```
+
 ## Statistics
 
 With the power of grep you can get overviews:
@@ -271,6 +390,36 @@ $ k stats history HDHD 2014
    project10     3 ▆▆▆▆▆▆▆▆▆▆ 
 ```
 
+## Realtime Web-based kanban boards 
+
+Create the following `index.html`:
+
+```html
+<!DOCTYPE html>
+<pre id="log"></pre>
+<script>
+  // helper function: log message to screen
+  function log(msg) { document.getElementById('log').textContent += msg + '\n'; }
+  // setup websocket with callbacks
+  var ws = new WebSocket('ws://localhost:8080/');
+  ws.onopen = function() { console.log('CONNECT'); };
+  ws.onclose = function() { console.log('DISCONNECT'); };
+  ws.onmessage = function(event) { log(event.data); };
+</script>
+```
+
+And then serve it to the web:
+
+```bash
+$ sudo apt-get install websocketd
+$ X=120 NOCOLOR=1 PLAIN=1 websocketd -passenv 'X,NOCOLOR,PLAIN' -port 8080 -staticdir . ./kanban show
+Mon, 04 Oct 2021 18:23:08 +0200 | INFO   | server     |  | Serving using application   : ./kanban show
+Mon, 04 Oct 2021 18:23:08 +0200 | INFO   | server     |  | Serving static content from : .
+Mon, 04 Oct 2021 18:23:08 +0200 | INFO   | server     |  | Starting WebSocket server   : ws://localhost:8080/
+```
+
+> Now surf to http://localhost:8080 and PROFIT!
+
 ## Tab completion 
 
 Somehow source `kanban.completion` in your `~/.bashrc` or just copy it to `/etc/bash_completion.d`
diff --git a/kanban b/kanban
index 0e76837..8f42097 100755
--- a/kanban
+++ b/kanban
@@ -6,7 +6,7 @@
 # 
 #   kanban init                             # initialize kanban in current directory
 #   kanban add                              # add item interactive (adviced) 
-#   kanban show [status] ....               # show ascii kanban board [with status]
+#   kanban show [dir with .kanban]          # show global [or nested] ascii kanbanboard
 #   kanban <id>                             # edit or update item 
 #   kanban <id> <status>                    # update status of todo id (uses $EDITOR as preferred editor)
 #   kanban <status> .....                   # list only todo items with this status(es)
@@ -16,6 +16,7 @@
 #   kanban stats status [tag]
 #   kanban stats tag 
 #   kanban stats history 
+#   kanban csv                              # edit raw csv
 # 
 #   NOTE #1: statuses can be managed in ~/.kanban/.kanban.conf
 #   NOTE #2: the database csv can be found in ~/.kanban/.kanban.csv
@@ -36,9 +37,9 @@
 #   X=120 kanban ....         # set max line-width to 120
 #   NOCOLOR=1 kanban ....     # disable colors
 #   PLAIN=1 kanban ...        # plaintext, disable utf8 chars
-#
+# 
 # Tips:
-#
+# 
 #   * <current_dir>/.kanban or ~/.kanban dir is checked for configuration / data
 #   * put .kanban directories in project-dirs
 #   * entering an existing text-filename as description enables note-keeping
@@ -61,27 +62,31 @@ deps="tput column pr gawk"
 for dep in $deps; do which $dep &>/dev/null || { echo "$dep-cmd not installed..aborting (maybe install coreutils util-linux pkgs?)"; exit 1; }; done
 BOX=(┌ ─ ┐ └ ┘ │ ┤ ┴ ┬ ├ ┼)
 BAR=(▁ ▂ ▃ ▄ ▅ ▆ ▆ ▇ ▇ '█' '█')
-COL1="\033[0m"
-COL2="\033[90m"
-COL3="\033[88m"
-TMP=~/.kanban.tmp
+COL0="\033[0m"
+COL1="\033[37;1m"
+COL2="\033[91;1m"
+COL3="\033[91;5m"
+TMP=$(mktemp -t kanban.XXXXXXXX)
+[[ ! -n $TERM ]] && TERM=vt100
 locale | grep -q "UTF-8" && UTF8=1
 [[ -n $PLAIN ]] && unset UTF8
-[[ ! -n $X   ]] && X=$(tput cols)    # get size of terminal window
-[[ ! -n $Y   ]] && Y=$(tput lines)   # 
+[[ ! -n $X   ]] && X=$(tput cols)   # get size of terminal window
+[[ ! -n $Y   ]] && Y=$(tput lines)  # 
 SMALLSCREEN=('SCHEDULED' 'HOLD' 'DOING')  # uncomment to get simplified kanban board
+[[ ! -n $XSMALL ]] && XSMALL=119
 FILE_CONF=".kanban/.kanban.conf"
 FILE_CSV=".kanban/.kanban.csv"
-[[ ! -n $EDITOR ]] && {
+[[ ! -n "$EDITOR" ]] && {
   which nano   &>/dev/null && EDITOR=nano
   which pico   &>/dev/null && EDITOR=pico
+  printf "${COL2}warning:${COL0} EDITOR env-variable not set: add it ('export EDITOR=vim' e.g.) to ~/.profile e.g.)\n"
 }
 
 # migration: move config files of old kanban versions to .kanban
 moveconfig(){ 
-  mkdir $1/.kanban
+  mkdir "$1/.kanban"
   echo "[!] old config files detected..moving to .kanban-folder"
-  mv $1/.kanban.* $1/.kanban/.
+  mv "$1/.kanban".* "$1/.kanban/."
   sleep 3s
   clear
 }
@@ -92,22 +97,36 @@ moveconfig(){
 config_example="# kanban config file
 statuses=('TODO' 'HOLD' 'DOING' 'DONE' 'NOTES' 'BACKLOG') 
 
-SMALLSCREEN=('DOING' 'TODO' 'HOLD')  # uncomment to get simplified kanban board
+XSMALL=119                           # show small kanban for terminalwidth < 119 chars
+SMALLSCREEN=('DOING' 'TODO' 'HOLD')  # define simplified kanban board statuses
 
 # maximum amount of todos within status (triggers warning when exceeds)
-declare -A maximum_todo
-maximum_todo['HOLD']=5
-maximum_todo['DOING']=4
-maximum_todo['CODE']=3
+declare -a maximum_todo
+maximum_todo[HOLD]=10
+maximum_todo[DOING]=5
 "
 
 # usage: fb put <x> <y> <string>
 put() { printf "\x1B["$2";"$1"f$3" "$4"; }
 
-strtoline(){ for((i=0;i<${#1};i++)); do printf "$2"; done; }
+strtoline() {
+    str="$1"
+    char="$2"
+    i=0
+    len=${#str}
+    
+    while [ "$i" -lt "$len" ]; do
+        printf "%s" "$char"
+        i=$((i + 1))
+    done
+}
 
-draw_line(){
-  for((i=0;i<$1;i++)); do printf "-"; done
+draw_line() {
+    i=0
+    while [ "$i" -lt "$1" ]; do
+        printf "-"
+        i=$((i + 1))
+    done
 }
 
 # usage: fb box <x> <y> <width> <height>
@@ -125,15 +144,16 @@ createconfig(){
       [[ ! "$overwrite" == "y" ]] && echo "aborted" && exit 1;
     }
   }
-  [[ ! -d $dir/.kanban ]] && mkdir $dir/.kanban
-  echo "$config_example" > $dir/$FILE_CONF 
-  touch $dir/$FILE_CSV 
+  [[ ! -d "$dir/.kanban" ]] && mkdir "$dir/.kanban"
+  echo "$config_example" > "$dir/$FILE_CONF"
+  touch "$dir/$FILE_CSV" 
 }
 
-init(){ createconfig $(pwd); }
+init(){ createconfig "$(pwd)"; }
 
 tags(){
-  cat $KANBANFILE | awk -F',' '{ print $2 }' | sed 's/,.*//g;s/"//g' | tail -n+2 | sort | uniq | tr '\n' ' '
+  cat "$KANBANFILE" | awk -F',' '{ print $2 }' | sed 's/,.*//g;s/"//g' | tail -n+1 | sort | uniq | tr '\n' ' '
+  echo
 }
 
 get_statuses(){
@@ -153,8 +173,17 @@ add_interactive(){
 add(){
   [[ ! -n $1 ]] && { add_interactive "$@"; return 0; }
   [[ ! "${statuses[*]}" =~ "$1" ]] && echo "invalid status $1 (possible: ${statuses[*]})" && exit 1 
-  csvline="$( for col in "$@"; do printf "%s" "\"$col\","; done )\"${1:0:1}\",\"$(get_current_date)\"\""
-  echo "${csvline:0:$((${#csvline}-1))}" >> $KANBANFILE 
+  status="$1"
+  csvline='"'$1'","'$2'"'; shift;shift;
+  csvline="$csvline,\"$*\",\"${status:0:1}\",\"$(get_current_date)\"\""
+  echo "${csvline:0:$((${#csvline}-1))}" >> "$KANBANFILE" 
+}
+
+evaluate(){
+  IFS=''; cat - | sed 's/\\/\\\\\\\\/g' | while read -r line; do 
+    [[ "$line" =~ '$' ]] && line="$(eval "echo \"$( echo "$line" | sed 's/"/\\"/g')\"")"; 
+    echo "$line"
+  done
 }
 
 stats(){
@@ -177,58 +206,62 @@ stats(){
 }
 
 _init(){                          
-  trap "[[ ! -n \$NOCOLOR ]] && tput cnorm -- normal; " 0 1 5    # reset terminal colors to normal
-  (( $X > 150 )) && unset SMALLSCREEN
-  [[ -n $NOCOLOR ]] && { COL1="";COL2="";COL3=""; }
+  trap "[[ -z \$NOCOLOR ]] && tput sgr0" 0 1 5    # reset terminal colors to normal
+  (( $X > $XSMALL )) && unset SMALLSCREEN
+  [[ -n $NOCOLOR ]] && { COL1="";COL0="";COL2=""; COL3=""; }
 }
 
 list(){
   tags="$*"
   greppattern="(${tags// /\|})"
   create_index
-  cat $TMP.index | grep -E "$greppattern" | sort -k2 -t, | HEADER="id,status,tag,description,history,start,touched\n-,-,-,-,-\n" printcsv 6 | cut -c 1-$(tput cols)
+  echo -e "$COL1"
+  cat $TMP.index | grep -E "$greppattern" | sort -k2 -t, | HEADER="id,status,tag,description,history,start,touched\n-,-,-,-,-\n" printcsv 6 | cut -c 1-$X | colorize 3
   rm $TMP.*
 }
 
-do_alert(){
-  nlines=$(echo "$1" | wc -l ) ; maximum=$2 
-  if [[ ${#maximum} > 0 ]] && [[ $nlines > $maximum ]]; then 
-    echo -e "\n\n!!! alert: number of '$3' items (max $maximum) slows down average productionrate !!!" >> "$4"
-  fi
-}
-
 create_index(){
   rm $TMP.index &>/dev/null
-  cat -n $KANBANFILE | sed 's/^[ ]\+//g;s/\t/,/g' >> $TMP.index
+  cat -n "$KANBANFILE" | sed 's/^[ ]\+//g;s/\\t/,/g;s/"\/.*\//"/g' | evaluate >> $TMP.index
 }
 
 columnize(){
-  awkformat='{ tag=substr($2,1,4); gsub($2,tag); printf("%-7s",$1); print " #"$2" "$3" "$4" "$5 }'
+  awkformat='{ tag=substr($2,1,4); gsub($2,tag); printf("%-5s",$1); print " #"$2" "$3" "$4" "$5 }'
   [[ -n $SMALLSCREEN ]] && awkformat='{ print $1" "$3" "$4" "$5 }'
-  i=1; lines="$(cat)"; header="$( echo "$lines" | head -n0 )"; output="";
+  i=1; lines="$(cat)"; header="$( echo "$lines" | head -1 )"; output="";
   rm $TMP.col.* &>/dev/null
-  echo -e "${COL1}$header${COL2}";
   for status in "${statuses[@]}"; do 
     [[ -n $SMALLSCREEN ]] && ! [[ "${SMALLSCREEN[@]}" =~ $status ]] && continue
-    echo -e ".$(strtoline "$status" "~")~~.\n| $status |_______\n|" > $TMP.col.$i
-    cat $TMP.index | grep "$status" | sed 's/["]\?'$status'["]\?//g' | printcsv 5 | awk "$awkformat" |  sed 's/^/| /g;s/  / /g'  | unexpand >> $TMP.col.$i
-    #echo "$( cat $TMP.col.$i )" > $TMP.col.$i
+    label=$status
+    nlines=$(cat $TMP.index | grep "$status" | wc -l) 
+    maxlines=0 
+    [[ -n "maximum_todo[$status]" ]] && maxlines=${maximum_todo[$status]}
+    [[ ${maximum_todo[$status]} > 0 ]] && [[ $nlines > ${maximum_todo[$status]} ]] && label="*$status*"
+    echo -e ".$(strtoline "$label" "~")~~.\n| $label |_______\n|" > $TMP.col.$i
+    cat $TMP.index | grep "$status" | sed 's/["]\?'$status'["]\?//g'       | \
+      printcsv 5   | awk "$awkformat" |  sed 's/^/| /g;s/  / /g'           | unexpand >> $TMP.col.$i
     i=$((i+1))
   done 
-  pr -m -t -w$((X-8)) -S"      "  $TMP.col.* | lines 
+  pr -m -t -w$((X-5)) $TMP.col.* | lines 
   rm $TMP.col.* # print and cleanup
 }
 
 lines(){
   echo -e "$COL1"
-  {
-    if [[ -n $UTF8 ]]; then
-      cat | sed 's/| /│ /g;s/\.~/┌/g;s/~\./──┐/g;s///g;s/~/─/g;s/|\./└/g;s/|/│/g' # nice utf9 lines
-    else 
-      cat | sed 's/~/-/g;s/|+/|/g;'; 
-    fi
-  } | awk '{ print $0 }; NR > 2 { printf "'$COL2'" }'
-  echo -e "$COL1"
+  if [[ -n $UTF8 ]]; then
+    cat | sed 's/| /│ /g;s/\.~/┌/g;s/~\./──┐/g;s///g;s/~/─/g;s/|\./└/g;s/|/│/g' # nice utf9 lines
+  else 
+    cat | sed 's/~/-/g;s/|+/|/g;'; 
+  fi | colorize 3
+}
+
+colorize(){
+  cat | awk '{ 
+    a = gensub(/#([a-zA-Z0-9_\.-]+) /,"'$COL1'&'$COL0'","g")
+    a = gensub(/\*([a-zA-Z0-9_\.-]+)\*/,"'$COL3'&'$COL0'","g",a)
+    if( NR == '$1' ){ printf "'$COL0'"; }
+    print a
+  }'
 }
 
 align(){
@@ -236,23 +269,33 @@ align(){
 }
 
 show(){
+  [[ -n $1 ]] && { cd $1; echo "[kanban] showing nested kanban '$1'"; $0 show; exit 0; }
   [[ ! -f "$KANBANFILE" ]] && touch "$KANBANFILE" 
   create_index
   if [[ -n $1 ]]; then 
-    statuses=(); for status in $*; do statuses+=($status); done 
+    statuses=""; for status in $*; do statuses="$status $statuses"; done 
   fi
   { 
     echo "$1"
     if [[ -n $1 ]]; then cat $TMP.index | grep "$1"; else cat $TMP.index; fi 
-  } | columnize | more
-  [[ -n $SMALLSCREEN ]] && echo -e "    ${COL1}(${COL2} small terminal detected, hiding certain columns ${COL1})"
+  } | columnize
+  [[ -n $SMALLSCREEN ]] && echo -e "    ${COL1}(${COL0} small terminal detected, hiding certain columns ${COL1})"
   echo ""
+  ls */.kanban/.kanban.conf 2>/dev/null | awk '{
+    if( !START ){
+      print "kanbans: "
+      START=1
+    }
+    gsub("^./","",$0)
+    gsub("/.kanban.*","",$0)
+    print "   ├─ "$0 
+  }'
 }
 
 get_current_date(){ date "+%Y-%m-%d@%H:%M"; }
 
 update_item_status(){
-  item="$( cat $KANBANFILE | awk "{ if (NR==$1) print \$0 }" )"
+  item="$( cat "$KANBANFILE" | awk "{ if (NR==$1) print \$0 }" )"
   [[ ${#item} == 0 ]] && echo "item $1 not found" && exit 1 
   if [[ -n "$2" ]]; then  # status change 
     status="$(echo "$item" | awk -F',' '{ print $1 }' | sed 's/"//g' )"
@@ -260,29 +303,31 @@ update_item_status(){
     dates="$(echo "$item"  | awk -F',' '{ print $5 }' | sed 's/"//g' )"
     newflags="$flags${2:0:1}"
     newdates="$dates $(get_current_date)"
-    [[ "$2" =~ "DONE" ]] && date="$(get_current_date)"
+    #[[ "$status" =~ "\$(" ]] && { update_item $1; return 0; }
+    [[ "$2" =~ "DONE"   ]] && date="$(get_current_date)"
     newitem="$item"
     newitem="${newitem/$status/$2}"
     newitem="${newitem/$flags/$newflags}"
     newitem="${newitem/$dates/$newdates}"
-    sed -i "s|$item|$newitem|g" $KANBANFILE 
+    sed -i '' "s|$item|$newitem|g" "$KANBANFILE" 
     echo "$status -> $2"
   fi
 }
 
 update_item(){
-  item="$( cat $KANBANFILE | awk "{ if (NR==$1) print \$0 }" )"
+  item="$( cat "$KANBANFILE" | awk "{ if (NR==$1) print \$0 }" )"
   [[ ${#item} == 0 ]] && echo "item $1 not found" && exit 1 
   status="$(echo "$item" | awk -F',' '{ print $1 }')"
   file="$(echo "$item" | awk -F',' '{ print $3 }')"
   file="${file//\"/}"
+  [[ -d $file/.kanban ]] && { show $file; return; }
   [[ -f $file ]] && ${EDITOR} "$file"
   echo '#
 # STATUSES ARE: '${statuses[*]}' 
 #
 '"$item" > $TMP.update
   ${EDITOR} $TMP.update
-  sed -i "s|$item|$(cat $TMP.update | tail -n1)|g" $KANBANFILE 
+  sed -i '' "s|$item|$(cat $TMP.update | tail -n1)|g" "$KANBANFILE" 
   echo "updated item $1"
 }
 
@@ -295,16 +340,20 @@ printcsv(){
     max=$max | sed 's/""/"/g' | column -t -s $'\t'                   
 }
 
+csv(){
+  ${EDITOR} $KANBANFILE
+}
+
 # source config
 [[ ! -f ~/$FILE_CONF ]] && { createconfig; }
 [[   -f $FILE_CONF     ]] && source $FILE_CONF 
 [[ ! -f $FILE_CONF     ]] && source ~/$FILE_CONF 
 
-if [[ ! -n $KANBANFILE ]]; then 
+if [[ ! -n "$KANBANFILE" ]]; then 
   [[ -f "$FILE_CSV" ]] && KANBANFILE="$(pwd)/$FILE_CSV"
-  [[ ! -f $KANBANFILE ]] && KANBANFILE=~/"$FILE_CSV"
+  [[ ! -f "$KANBANFILE" ]] && KANBANFILE=~/"$FILE_CSV"
 fi
-[[ ! -f $KANBANFILE ]] && { echo "$KANBANFILE does not exist"; exit; }
+[[ ! -f "$KANBANFILE" ]] && { echo "$KANBANFILE does not exist"; exit; }
 
 
 # execute main
@@ -315,11 +364,15 @@ if [[ -n "$1" ]]; then
   [[ "${statuses[*]}" =~ "$1" ]] && { list "$@" ; exit 0; }
   case "$1" in 
 
-    [0-9]*)  [[ -n $2 ]] && [[ "${statuses[*]}" =~ "$2" ]] && update_item_status "$@" && exit 0
+    [0-9]*)  [[ -n $2 ]] && {
+                update_item_status "$@"
+                    [[ ! "${statuses[*]}" =~ "$2" ]] && echo -e "[!] burying in csv (visible statuses are: ${statuses[*]})"
+                exit 0
+             }
              update_item "$@"
              ;;
 
     *)       "$@" 
              ;;
   esac
-else grep -A33 "^# Usage:" "$0" | sed 's/^# //g'; fi
+else grep -A40 "^# Usage:" "$0" | sed 's/^# //g' | more ; fi
diff --git a/kanban.completion b/kanban.completion
old mode 100755
new mode 100644
diff --git a/test/test.csv b/test/test.csv
old mode 100755
new mode 100644
index 9875cd4..892170e
--- a/test/test.csv
+++ b/test/test.csv
@@ -1,145 +1,145 @@
-"DOING","project10","fix item 1","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project10","fix item 2","H","2021-09-30@15:15"
-"HOLD","project10","fix item 3","H","2021-09-30@15:15"
-"HOLD","project10","fix item 4","H","2021-09-30@15:15"
-"HOLD","project10","fix item 5","H","2021-09-30@15:15"
-"DOING","project10","fix item 6","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project10","fix item 7","H","2021-09-30@15:15"
-"HOLD","project10","fix item 8","H","2021-09-30@15:15"
-"HOLD","project10","fix item 9","H","2021-09-30@15:15"
-"HOLD","project20","fix item 1","H","2021-09-30@15:15"
-"DOING","project20","fix item 2","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project20","fix item 3","H","2021-09-30@15:15"
-"HOLD","project20","fix item 4","H","2021-09-30@15:15"
-"HOLD","project20","fix item 5","H","2021-09-30@15:15"
-"HOLD","project20","fix item 6","H","2021-09-30@15:15"
-"DOING","project20","fix item 7","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project20","fix item 8","H","2021-09-30@15:15"
-"HOLD","project20","fix item 9","H","2021-09-30@15:15"
-"HOLD","project20","fix item 10","H","2021-09-30@15:15"
-"HOLD","project20","fix item 11","H","2021-09-30@15:15"
-"DOING","project20","fix item 12","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project20","fix item 13","H","2021-09-30@15:15"
-"HOLD","project20","fix item 14","H","2021-09-30@15:15"
-"HOLD","project20","fix item 15","H","2021-09-30@15:15"
-"HOLD","project20","fix item 16","H","2021-09-30@15:15"
-"DOING","project20","fix item 17","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project20","fix item 18","H","2021-09-30@15:15"
-"HOLD","project20","fix item 19","H","2021-09-30@15:15"
-"HOLD","project30","fix item 1","H","2021-09-30@15:15"
-"HOLD","project30","fix item 2","H","2021-09-30@15:15"
-"DOING","project30","fix item 3","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project30","fix item 4","H","2021-09-30@15:15"
-"HOLD","project30","fix item 5","H","2021-09-30@15:15"
-"HOLD","project30","fix item 6","H","2021-09-30@15:15"
-"HOLD","project30","fix item 7","H","2021-09-30@15:15"
-"DOING","project30","fix item 8","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project30","fix item 9","H","2021-09-30@15:15"
-"HOLD","project30","fix item 10","H","2021-09-30@15:15"
-"HOLD","project30","fix item 11","H","2021-09-30@15:15"
-"HOLD","project30","fix item 12","H","2021-09-30@15:15"
-"DOING","project30","fix item 13","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project30","fix item 14","H","2021-09-30@15:15"
-"HOLD","project30","fix item 15","H","2021-09-30@15:15"
-"HOLD","project30","fix item 16","H","2021-09-30@15:15"
-"HOLD","project30","fix item 17","H","2021-09-30@15:15"
-"DOING","project30","fix item 18","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project30","fix item 19","H","2021-09-30@15:15"
-"HOLD","project30","fix item 20","H","2021-09-30@15:15"
-"HOLD","project30","fix item 21","H","2021-09-30@15:15"
-"HOLD","project30","fix item 22","H","2021-09-30@15:15"
-"DOING","project30","fix item 23","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project30","fix item 24","H","2021-09-30@15:15"
-"HOLD","project30","fix item 25","H","2021-09-30@15:15"
-"HOLD","project30","fix item 26","H","2021-09-30@15:15"
-"HOLD","project30","fix item 27","H","2021-09-30@15:15"
-"DOING","project30","fix item 28","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project30","fix item 29","H","2021-09-30@15:15"
-"HOLD","project40","fix item 1","H","2021-09-30@15:15"
-"HOLD","project40","fix item 2","H","2021-09-30@15:15"
-"HOLD","project40","fix item 3","H","2021-09-30@15:15"
-"DOING","project40","fix item 4","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project40","fix item 5","H","2021-09-30@15:15"
-"HOLD","project40","fix item 6","H","2021-09-30@15:15"
-"HOLD","project40","fix item 7","H","2021-09-30@15:15"
-"HOLD","project40","fix item 8","H","2021-09-30@15:15"
-"DOING","project40","fix item 9","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project40","fix item 10","H","2021-09-30@15:15"
-"HOLD","project40","fix item 11","H","2021-09-30@15:15"
-"HOLD","project40","fix item 12","H","2021-09-30@15:15"
-"HOLD","project40","fix item 13","H","2021-09-30@15:15"
-"DOING","project40","fix item 14","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project40","fix item 15","H","2021-09-30@15:15"
-"HOLD","project40","fix item 16","H","2021-09-30@15:15"
-"HOLD","project40","fix item 17","H","2021-09-30@15:15"
-"HOLD","project40","fix item 18","H","2021-09-30@15:15"
-"DOING","project40","fix item 19","HDHDHD","2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15 2021-09-30@15:15"
-"HOLD","project40","fix item 20","H","2021-09-30@15:15"
-"HOLD","project40","fix item 21","H","2021-09-30@15:15"
-"HOLD","project40","fix item 22","H","2021-09-30@15:15"
-"HOLD","project40","fix item 23","H","2021-09-30@15:15"
-"HOLD","project40","fix item 24","H","2021-09-30@15:15"
-"HOLD","project40","fix item 25","H","2021-09-30@15:15"
-"HOLD","project40","fix item 26","H","2021-09-30@15:15"
-"HOLD","project40","fix item 27","H","2021-09-30@15:15"
-"HOLD","project40","fix item 28","H","2021-09-30@15:15"
-"HOLD","project40","fix item 29","H","2021-09-30@15:15"
-"HOLD","project40","fix item 30","H","2021-09-30@15:15"
-"HOLD","project40","fix item 31","H","2021-09-30@15:15"
-"HOLD","project40","fix item 32","H","2021-09-30@15:15"
-"HOLD","project40","fix item 33","H","2021-09-30@15:15"
-"HOLD","project40","fix item 34","H","2021-09-30@15:15"
-"HOLD","project40","fix item 35","H","2021-09-30@15:15"
-"HOLD","project40","fix item 36","H","2021-09-30@15:15"
-"HOLD","project40","fix item 37","H","2021-09-30@15:15"
-"HOLD","project40","fix item 38","H","2021-09-30@15:15"
-"HOLD","project40","fix item 39","H","2021-09-30@15:15"
-"HOLD","project50","fix item 1","H","2021-09-30@15:15"
-"HOLD","project50","fix item 2","H","2021-09-30@15:15"
-"HOLD","project50","fix item 3","H","2021-09-30@15:15"
-"HOLD","project50","fix item 4","H","2021-09-30@15:15"
-"HOLD","project50","fix item 5","H","2021-09-30@15:15"
-"HOLD","project50","fix item 6","H","2021-09-30@15:15"
-"HOLD","project50","fix item 7","H","2021-09-30@15:15"
-"HOLD","project50","fix item 8","H","2021-09-30@15:15"
-"HOLD","project50","fix item 9","H","2021-09-30@15:15"
-"HOLD","project50","fix item 10","H","2021-09-30@15:15"
-"HOLD","project50","fix item 11","H","2021-09-30@15:15"
-"HOLD","project50","fix item 12","H","2021-09-30@15:15"
-"HOLD","project50","fix item 13","H","2021-09-30@15:15"
-"HOLD","project50","fix item 14","H","2021-09-30@15:15"
-"HOLD","project50","fix item 15","H","2021-09-30@15:15"
-"HOLD","project50","fix item 16","H","2021-09-30@15:15"
-"HOLD","project50","fix item 17","H","2021-09-30@15:15"
-"HOLD","project50","fix item 18","H","2021-09-30@15:15"
-"HOLD","project50","fix item 19","H","2021-09-30@15:15"
-"HOLD","project50","fix item 20","H","2021-09-30@15:15"
-"HOLD","project50","fix item 21","H","2021-09-30@15:15"
-"HOLD","project50","fix item 22","H","2021-09-30@15:15"
-"HOLD","project50","fix item 23","H","2021-09-30@15:15"
-"HOLD","project50","fix item 24","H","2021-09-30@15:15"
-"HOLD","project50","fix item 25","H","2021-09-30@15:15"
-"HOLD","project50","fix item 26","H","2021-09-30@15:15"
-"HOLD","project50","fix item 27","H","2021-09-30@15:15"
-"HOLD","project50","fix item 28","H","2021-09-30@15:15"
-"HOLD","project50","fix item 29","H","2021-09-30@15:15"
-"HOLD","project50","fix item 30","H","2021-09-30@15:15"
-"HOLD","project50","fix item 31","H","2021-09-30@15:15"
-"HOLD","project50","fix item 32","H","2021-09-30@15:15"
-"HOLD","project50","fix item 33","H","2021-09-30@15:15"
-"HOLD","project50","fix item 34","H","2021-09-30@15:15"
-"HOLD","project50","fix item 35","H","2021-09-30@15:15"
-"HOLD","project50","fix item 36","H","2021-09-30@15:15"
-"HOLD","project50","fix item 37","H","2021-09-30@15:15"
-"HOLD","project50","fix item 38","H","2021-09-30@15:15"
-"HOLD","project50","fix item 39","H","2021-09-30@15:15"
-"HOLD","project50","fix item 40","H","2021-09-30@15:15"
-"HOLD","project50","fix item 41","H","2021-09-30@15:15"
-"HOLD","project50","fix item 42","H","2021-09-30@15:15"
-"HOLD","project50","fix item 43","H","2021-09-30@15:15"
-"HOLD","project50","fix item 44","H","2021-09-30@15:15"
-"HOLD","project50","fix item 45","H","2021-09-30@15:15"
-"HOLD","project50","fix item 46","H","2021-09-30@15:15"
-"HOLD","project50","fix item 47","H","2021-09-30@15:15"
-"HOLD","project50","fix item 48","H","2021-09-30@15:15"
-"HOLD","project50","fix item 49","H","2021-09-30@15:15"
+"HOLD","project10","fix item 1","H","2024-10-17@10:11"
+"HOLD","project10","fix item 2","H","2024-10-17@10:11"
+"HOLD","project10","fix item 3","H","2024-10-17@10:11"
+"HOLD","project10","fix item 4","H","2024-10-17@10:11"
+"HOLD","project10","fix item 5","H","2024-10-17@10:11"
+"HOLD","project10","fix item 6","H","2024-10-17@10:11"
+"HOLD","project10","fix item 7","H","2024-10-17@10:11"
+"HOLD","project10","fix item 8","H","2024-10-17@10:11"
+"HOLD","project10","fix item 9","H","2024-10-17@10:11"
+"HOLD","project20","fix item 1","H","2024-10-17@10:11"
+"HOLD","project20","fix item 2","H","2024-10-17@10:11"
+"HOLD","project20","fix item 3","H","2024-10-17@10:11"
+"HOLD","project20","fix item 4","H","2024-10-17@10:11"
+"HOLD","project20","fix item 5","H","2024-10-17@10:11"
+"HOLD","project20","fix item 6","H","2024-10-17@10:11"
+"HOLD","project20","fix item 7","H","2024-10-17@10:11"
+"HOLD","project20","fix item 8","H","2024-10-17@10:11"
+"HOLD","project20","fix item 9","H","2024-10-17@10:11"
+"HOLD","project20","fix item 10","H","2024-10-17@10:11"
+"HOLD","project20","fix item 11","H","2024-10-17@10:11"
+"HOLD","project20","fix item 12","H","2024-10-17@10:11"
+"HOLD","project20","fix item 13","H","2024-10-17@10:11"
+"HOLD","project20","fix item 14","H","2024-10-17@10:11"
+"HOLD","project20","fix item 15","H","2024-10-17@10:11"
+"HOLD","project20","fix item 16","H","2024-10-17@10:11"
+"HOLD","project20","fix item 17","H","2024-10-17@10:11"
+"HOLD","project20","fix item 18","H","2024-10-17@10:11"
+"HOLD","project20","fix item 19","H","2024-10-17@10:11"
+"HOLD","project30","fix item 1","H","2024-10-17@10:11"
+"HOLD","project30","fix item 2","H","2024-10-17@10:11"
+"HOLD","project30","fix item 3","H","2024-10-17@10:11"
+"HOLD","project30","fix item 4","H","2024-10-17@10:11"
+"HOLD","project30","fix item 5","H","2024-10-17@10:11"
+"HOLD","project30","fix item 6","H","2024-10-17@10:11"
+"HOLD","project30","fix item 7","H","2024-10-17@10:11"
+"HOLD","project30","fix item 8","H","2024-10-17@10:11"
+"HOLD","project30","fix item 9","H","2024-10-17@10:11"
+"HOLD","project30","fix item 10","H","2024-10-17@10:11"
+"HOLD","project30","fix item 11","H","2024-10-17@10:11"
+"HOLD","project30","fix item 12","H","2024-10-17@10:11"
+"HOLD","project30","fix item 13","H","2024-10-17@10:11"
+"HOLD","project30","fix item 14","H","2024-10-17@10:11"
+"HOLD","project30","fix item 15","H","2024-10-17@10:11"
+"HOLD","project30","fix item 16","H","2024-10-17@10:11"
+"HOLD","project30","fix item 17","H","2024-10-17@10:11"
+"HOLD","project30","fix item 18","H","2024-10-17@10:11"
+"HOLD","project30","fix item 19","H","2024-10-17@10:11"
+"HOLD","project30","fix item 20","H","2024-10-17@10:11"
+"HOLD","project30","fix item 21","H","2024-10-17@10:11"
+"HOLD","project30","fix item 22","H","2024-10-17@10:11"
+"HOLD","project30","fix item 23","H","2024-10-17@10:11"
+"HOLD","project30","fix item 24","H","2024-10-17@10:11"
+"HOLD","project30","fix item 25","H","2024-10-17@10:11"
+"HOLD","project30","fix item 26","H","2024-10-17@10:11"
+"HOLD","project30","fix item 27","H","2024-10-17@10:11"
+"HOLD","project30","fix item 28","H","2024-10-17@10:11"
+"HOLD","project30","fix item 29","H","2024-10-17@10:11"
+"HOLD","project40","fix item 1","H","2024-10-17@10:11"
+"HOLD","project40","fix item 2","H","2024-10-17@10:11"
+"HOLD","project40","fix item 3","H","2024-10-17@10:11"
+"HOLD","project40","fix item 4","H","2024-10-17@10:11"
+"HOLD","project40","fix item 5","H","2024-10-17@10:11"
+"HOLD","project40","fix item 6","H","2024-10-17@10:11"
+"HOLD","project40","fix item 7","H","2024-10-17@10:11"
+"HOLD","project40","fix item 8","H","2024-10-17@10:11"
+"HOLD","project40","fix item 9","H","2024-10-17@10:11"
+"HOLD","project40","fix item 10","H","2024-10-17@10:11"
+"HOLD","project40","fix item 11","H","2024-10-17@10:11"
+"HOLD","project40","fix item 12","H","2024-10-17@10:11"
+"HOLD","project40","fix item 13","H","2024-10-17@10:11"
+"HOLD","project40","fix item 14","H","2024-10-17@10:11"
+"HOLD","project40","fix item 15","H","2024-10-17@10:11"
+"HOLD","project40","fix item 16","H","2024-10-17@10:11"
+"HOLD","project40","fix item 17","H","2024-10-17@10:11"
+"HOLD","project40","fix item 18","H","2024-10-17@10:11"
+"HOLD","project40","fix item 19","H","2024-10-17@10:11"
+"HOLD","project40","fix item 20","H","2024-10-17@10:11"
+"HOLD","project40","fix item 21","H","2024-10-17@10:11"
+"HOLD","project40","fix item 22","H","2024-10-17@10:11"
+"HOLD","project40","fix item 23","H","2024-10-17@10:11"
+"HOLD","project40","fix item 24","H","2024-10-17@10:11"
+"HOLD","project40","fix item 25","H","2024-10-17@10:11"
+"HOLD","project40","fix item 26","H","2024-10-17@10:11"
+"HOLD","project40","fix item 27","H","2024-10-17@10:11"
+"HOLD","project40","fix item 28","H","2024-10-17@10:11"
+"HOLD","project40","fix item 29","H","2024-10-17@10:11"
+"HOLD","project40","fix item 30","H","2024-10-17@10:11"
+"HOLD","project40","fix item 31","H","2024-10-17@10:11"
+"HOLD","project40","fix item 32","H","2024-10-17@10:11"
+"HOLD","project40","fix item 33","H","2024-10-17@10:11"
+"HOLD","project40","fix item 34","H","2024-10-17@10:11"
+"HOLD","project40","fix item 35","H","2024-10-17@10:11"
+"HOLD","project40","fix item 36","H","2024-10-17@10:11"
+"HOLD","project40","fix item 37","H","2024-10-17@10:11"
+"HOLD","project40","fix item 38","H","2024-10-17@10:11"
+"HOLD","project40","fix item 39","H","2024-10-17@10:11"
+"HOLD","project50","fix item 1","H","2024-10-17@10:11"
+"HOLD","project50","fix item 2","H","2024-10-17@10:11"
+"HOLD","project50","fix item 3","H","2024-10-17@10:11"
+"HOLD","project50","fix item 4","H","2024-10-17@10:11"
+"HOLD","project50","fix item 5","H","2024-10-17@10:11"
+"HOLD","project50","fix item 6","H","2024-10-17@10:11"
+"HOLD","project50","fix item 7","H","2024-10-17@10:11"
+"HOLD","project50","fix item 8","H","2024-10-17@10:11"
+"HOLD","project50","fix item 9","H","2024-10-17@10:11"
+"HOLD","project50","fix item 10","H","2024-10-17@10:11"
+"HOLD","project50","fix item 11","H","2024-10-17@10:11"
+"HOLD","project50","fix item 12","H","2024-10-17@10:11"
+"HOLD","project50","fix item 13","H","2024-10-17@10:11"
+"HOLD","project50","fix item 14","H","2024-10-17@10:11"
+"HOLD","project50","fix item 15","H","2024-10-17@10:11"
+"HOLD","project50","fix item 16","H","2024-10-17@10:11"
+"HOLD","project50","fix item 17","H","2024-10-17@10:11"
+"HOLD","project50","fix item 18","H","2024-10-17@10:11"
+"HOLD","project50","fix item 19","H","2024-10-17@10:11"
+"HOLD","project50","fix item 20","H","2024-10-17@10:11"
+"HOLD","project50","fix item 21","H","2024-10-17@10:11"
+"HOLD","project50","fix item 22","H","2024-10-17@10:11"
+"HOLD","project50","fix item 23","H","2024-10-17@10:11"
+"HOLD","project50","fix item 24","H","2024-10-17@10:11"
+"HOLD","project50","fix item 25","H","2024-10-17@10:11"
+"HOLD","project50","fix item 26","H","2024-10-17@10:11"
+"HOLD","project50","fix item 27","H","2024-10-17@10:11"
+"HOLD","project50","fix item 28","H","2024-10-17@10:11"
+"HOLD","project50","fix item 29","H","2024-10-17@10:11"
+"HOLD","project50","fix item 30","H","2024-10-17@10:11"
+"HOLD","project50","fix item 31","H","2024-10-17@10:11"
+"HOLD","project50","fix item 32","H","2024-10-17@10:11"
+"HOLD","project50","fix item 33","H","2024-10-17@10:11"
+"HOLD","project50","fix item 34","H","2024-10-17@10:11"
+"HOLD","project50","fix item 35","H","2024-10-17@10:11"
+"HOLD","project50","fix item 36","H","2024-10-17@10:11"
+"HOLD","project50","fix item 37","H","2024-10-17@10:11"
+"HOLD","project50","fix item 38","H","2024-10-17@10:11"
+"HOLD","project50","fix item 39","H","2024-10-17@10:11"
+"HOLD","project50","fix item 40","H","2024-10-17@10:11"
+"HOLD","project50","fix item 41","H","2024-10-17@10:11"
+"HOLD","project50","fix item 42","H","2024-10-17@10:11"
+"HOLD","project50","fix item 43","H","2024-10-17@10:11"
+"HOLD","project50","fix item 44","H","2024-10-17@10:11"
+"HOLD","project50","fix item 45","H","2024-10-17@10:11"
+"HOLD","project50","fix item 46","H","2024-10-17@10:11"
+"HOLD","project50","fix item 47","H","2024-10-17@10:11"
+"HOLD","project50","fix item 48","H","2024-10-17@10:11"
+"HOLD","project50","fix item 49","H","2024-10-17@10:11"
