diff --git a/shell/defaults/main.yml b/shell/defaults/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..dd9aa0d6634fde5828832663d6c3563910b0e909
--- /dev/null
+++ b/shell/defaults/main.yml
@@ -0,0 +1,9 @@
+---
+
+shell_software:
+  - bash-completion
+  - emacs
+  - pwgen
+  - snmp
+  - telnet
+  - lftp
diff --git a/shell/tasks/shell.yml b/shell/tasks/shell.yml
index 6190e3debb0aeca45ea5edefd56e0715dc8a5451..3e1bae04d127cb59ec3afd4f5eb21be451fbdc6b 100644
--- a/shell/tasks/shell.yml
+++ b/shell/tasks/shell.yml
@@ -22,31 +22,25 @@
   with_items:
     - aptitude
     - atop
-    - bash-completion
     - build-essential
     - curl
     - dnsutils
-    - emacs
     - ethtool
     - file
     - git-extras
     - htop
     - iotop
-    - lftp
     - lsof
     - mtr-tiny
     - ncurses-term
     - nmap
     - pv
-    - pwgen
     - reptyr
     - rsync
     - screen
-    - snmp
     - strace
     - sysstat
     - tcpdump
-    - telnet
     - tmux
     - tree
     - whois
@@ -56,6 +50,15 @@
     - packages
     - shell
 
+- name: ensure installation of variable additional software
+  apt:
+    name: "{{ item }}"
+    state: installed
+  with_items: "{{ shell_software }}"
+  tags:
+    - packages
+    - shell
+
 - name: ensure we have an up-to-date version of grml-zsh-config
   get_url:
     url: https://www.archlinux.org/packages/extra/any/grml-zsh-config/download/