diff --git a/bin/activate b/bin/activate
index b65ac8a08947c9ec7d2ebdfac3e15adcd6b11b99..c9e272a8862109bae1e092bd60fd7e1161d97d57 100644
--- a/bin/activate
+++ b/bin/activate
@@ -2,17 +2,14 @@
 # you cannot run it directly
 
 deactivate () {
-    unset -f pydoc >/dev/null 2>&1
-
     # reset old environment variables
-    # ! [ -z ${VAR+_} ] returns true if VAR is declared at all
-    if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then
-        PATH="$_OLD_VIRTUAL_PATH"
+    if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
+        PATH="${_OLD_VIRTUAL_PATH:-}"
         export PATH
         unset _OLD_VIRTUAL_PATH
     fi
-    if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
-        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
+    if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
+        PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
         export PYTHONHOME
         unset _OLD_VIRTUAL_PYTHONHOME
     fi
@@ -20,18 +17,18 @@ deactivate () {
     # This should detect bash and zsh, which have a hash command that must
     # be called to get it to forget past commands.  Without forgetting
     # past commands the $PATH changes we made may not be respected
-    if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then
-        hash -r 2>/dev/null
+    if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
+        hash -r
     fi
 
-    if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
-        PS1="$_OLD_VIRTUAL_PS1"
+    if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
+        PS1="${_OLD_VIRTUAL_PS1:-}"
         export PS1
         unset _OLD_VIRTUAL_PS1
     fi
 
     unset VIRTUAL_ENV
-    if [ ! "${1-}" = "nondestructive" ] ; then
+    if [ ! "$1" = "nondestructive" ] ; then
     # Self destruct!
         unset -f deactivate
     fi
@@ -40,7 +37,7 @@ deactivate () {
 # unset irrelevant variables
 deactivate nondestructive
 
-VIRTUAL_ENV="/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell"
+VIRTUAL_ENV="/home/leo/Git/Chaos-Familien-Duell"
 export VIRTUAL_ENV
 
 _OLD_VIRTUAL_PATH="$PATH"
@@ -48,31 +45,32 @@ PATH="$VIRTUAL_ENV/bin:$PATH"
 export PATH
 
 # unset PYTHONHOME if set
-if ! [ -z "${PYTHONHOME+_}" ] ; then
-    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
+# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
+# could use `if (set -u; : $PYTHONHOME) ;` in bash
+if [ -n "${PYTHONHOME:-}" ] ; then
+    _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
     unset PYTHONHOME
 fi
 
-if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
-    _OLD_VIRTUAL_PS1="$PS1"
-    if [ "x" != x ] ; then
-        PS1="$PS1"
+if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
+    _OLD_VIRTUAL_PS1="${PS1:-}"
+    if [ "x(Chaos-Familien-Duell) " != x ] ; then
+	PS1="(Chaos-Familien-Duell) ${PS1:-}"
+    else
+    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
+        # special case for Aspen magic directories
+        # see http://www.zetadev.com/software/aspen/
+        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
     else
-        PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
+        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
+    fi
     fi
     export PS1
 fi
 
-# Make sure to unalias pydoc if it's already there
-alias pydoc 2>/dev/null >/dev/null && unalias pydoc
-
-pydoc () {
-    python -m pydoc "$@"
-}
-
 # This should detect bash and zsh, which have a hash command that must
 # be called to get it to forget past commands.  Without forgetting
 # past commands the $PATH changes we made may not be respected
-if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then
-    hash -r 2>/dev/null
+if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
+    hash -r
 fi
diff --git a/bin/activate.csh b/bin/activate.csh
index 5468c7a0db5bd67a24bad8e5e8375bf8ec93a4c9..2cb91781871f568d44e5d788603e995cfe037f58 100644
--- a/bin/activate.csh
+++ b/bin/activate.csh
@@ -1,41 +1,36 @@
 # This file must be used with "source bin/activate.csh" *from csh*.
 # You cannot run it directly.
 # Created by Davide Di Blasi <davidedb@gmail.com>.
+# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
 
-set newline='\
-'
-
-alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
+alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate'
 
 # Unset irrelevant variables.
 deactivate nondestructive
 
-setenv VIRTUAL_ENV "/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell"
-
-set _OLD_VIRTUAL_PATH="$PATH:q"
-setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q"
+setenv VIRTUAL_ENV "/home/leo/Git/Chaos-Familien-Duell"
 
+set _OLD_VIRTUAL_PATH="$PATH"
+setenv PATH "$VIRTUAL_ENV/bin:$PATH"
 
 
-if ("" != "") then
-    set env_name = ""
-else
-    set env_name = "$VIRTUAL_ENV:t:q"
-endif
+set _OLD_VIRTUAL_PROMPT="$prompt"
 
-# Could be in a non-interactive environment,
-# in which case, $prompt is undefined and we wouldn't
-# care about the prompt anyway.
-if ( $?prompt ) then
-    set _OLD_VIRTUAL_PROMPT="$prompt:q"
-if ( "$prompt:q" =~ *"$newline:q"* ) then
-    :
-else
-    set prompt = "[$env_name:q] $prompt:q"
+if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
+    if ("Chaos-Familien-Duell" != "") then
+        set env_name = "Chaos-Familien-Duell"
+    else
+        if (`basename "VIRTUAL_ENV"` == "__") then
+            # special case for Aspen magic directories
+            # see http://www.zetadev.com/software/aspen/
+            set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
+        else
+            set env_name = `basename "$VIRTUAL_ENV"`
+        endif
+    endif
+    set prompt = "[$env_name] $prompt"
+    unset env_name
 endif
-endif
-
-unset env_name
 
 alias pydoc python -m pydoc
 
diff --git a/bin/activate.fish b/bin/activate.fish
index f347781039907e282f9b5b5b78be571910d2677e..77565ecf5e94114d132f3ec6fb264a828a5e896a 100644
--- a/bin/activate.fish
+++ b/bin/activate.fish
@@ -1,74 +1,73 @@
-# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*.
-# Do not run it directly.
+# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
+# you cannot run it directly
 
-function deactivate -d 'Exit virtualenv mode and return to the normal environment.'
+function deactivate  -d "Exit virtualenv and return to normal shell environment"
     # reset old environment variables
     if test -n "$_OLD_VIRTUAL_PATH"
         set -gx PATH $_OLD_VIRTUAL_PATH
         set -e _OLD_VIRTUAL_PATH
     end
-
     if test -n "$_OLD_VIRTUAL_PYTHONHOME"
         set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
         set -e _OLD_VIRTUAL_PYTHONHOME
     end
 
     if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
-        # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`.
-        set -l fish_function_path
-
-        # Erase virtualenv's `fish_prompt` and restore the original.
         functions -e fish_prompt
+        set -e _OLD_FISH_PROMPT_OVERRIDE
         functions -c _old_fish_prompt fish_prompt
         functions -e _old_fish_prompt
-        set -e _OLD_FISH_PROMPT_OVERRIDE
     end
 
     set -e VIRTUAL_ENV
-
-    if test "$argv[1]" != 'nondestructive'
-        # Self-destruct!
-        functions -e pydoc
+    if test "$argv[1]" != "nondestructive"
+        # Self destruct!
         functions -e deactivate
     end
 end
 
-# Unset irrelevant variables.
+# unset irrelevant variables
 deactivate nondestructive
 
-set -gx VIRTUAL_ENV "/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell"
+set -gx VIRTUAL_ENV "/home/leo/Git/Chaos-Familien-Duell"
 
 set -gx _OLD_VIRTUAL_PATH $PATH
 set -gx PATH "$VIRTUAL_ENV/bin" $PATH
 
-# Unset `$PYTHONHOME` if set.
+# unset PYTHONHOME if set
 if set -q PYTHONHOME
     set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
     set -e PYTHONHOME
 end
 
-function pydoc
-    python -m pydoc $argv
-end
-
 if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
-    # Copy the current `fish_prompt` function as `_old_fish_prompt`.
+    # fish uses a function instead of an env var to generate the prompt.
+
+    # save the current fish_prompt function as the function _old_fish_prompt
     functions -c fish_prompt _old_fish_prompt
 
+    # with the original prompt function renamed, we can override with our own.
     function fish_prompt
-        # Save the current $status, for fish_prompts that display it.
+        # Save the return status of the last command
         set -l old_status $status
 
-        # Prompt override provided?
-        # If not, just prepend the environment name.
-        if test -n ""
-            printf '%s%s' "" (set_color normal)
+        # Prompt override?
+        if test -n "(Chaos-Familien-Duell) "
+            printf "%s%s" "(Chaos-Familien-Duell) " (set_color normal)
         else
-            printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV")
+            # ...Otherwise, prepend env
+            set -l _checkbase (basename "$VIRTUAL_ENV")
+            if test $_checkbase = "__"
+                # special case for Aspen magic directories
+                # see http://www.zetadev.com/software/aspen/
+                printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal)
+            else
+                printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal)
+            end
         end
 
-        # Restore the original $status
-        echo "exit $old_status" | source
+        # Restore the return status of the previous command.
+        echo "exit $old_status" | .
         _old_fish_prompt
     end
 
diff --git a/bin/activate.ps1 b/bin/activate.ps1
deleted file mode 100644
index 89dbec6ccdc0e9a05e79dbde928707d284712d07..0000000000000000000000000000000000000000
--- a/bin/activate.ps1
+++ /dev/null
@@ -1,150 +0,0 @@
-# This file must be dot sourced from PoSh; you cannot run it
-# directly. Do this: . ./activate.ps1
-
-# FIXME: clean up unused vars.
-$script:THIS_PATH = $myinvocation.mycommand.path
-$script:BASE_DIR = split-path (resolve-path "$THIS_PATH/..") -Parent
-$script:DIR_NAME = split-path $BASE_DIR -Leaf
-
-function global:deactivate ( [switch] $NonDestructive ){
-
-    if ( test-path variable:_OLD_VIRTUAL_PATH ) {
-        $env:PATH = $variable:_OLD_VIRTUAL_PATH
-        remove-variable "_OLD_VIRTUAL_PATH" -scope global
-    }
-
-    if ( test-path function:_old_virtual_prompt ) {
-        $function:prompt = $function:_old_virtual_prompt
-        remove-item function:\_old_virtual_prompt
-    }
-
-    if ($env:VIRTUAL_ENV) {
-        $old_env = split-path $env:VIRTUAL_ENV -leaf
-        remove-item env:VIRTUAL_ENV -erroraction silentlycontinue
-    }
-
-    if ( !$NonDestructive ) {
-        # Self destruct!
-        remove-item function:deactivate
-    }
-}
-
-# unset irrelevant variables
-deactivate -nondestructive
-
-$VIRTUAL_ENV = $BASE_DIR
-$env:VIRTUAL_ENV = $VIRTUAL_ENV
-
-$global:_OLD_VIRTUAL_PATH = $env:PATH
-$env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH
-if (! $env:VIRTUAL_ENV_DISABLE_PROMPT) {
-    function global:_old_virtual_prompt { "" }
-    $function:_old_virtual_prompt = $function:prompt
-    function global:prompt {
-        # Add a prefix to the current prompt, but don't discard it.
-        write-host "($(split-path $env:VIRTUAL_ENV -leaf)) " -nonewline
-        & $function:_old_virtual_prompt
-    }
-}
-
-# SIG # Begin signature block
-# MIISeAYJKoZIhvcNAQcCoIISaTCCEmUCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
-# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
-# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUS5reBwSg3zOUwhXf2jPChZzf
-# yPmggg6tMIIGcDCCBFigAwIBAgIBJDANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQG
-# EwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERp
-# Z2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2Vy
-# dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDcxMDI0MjIwMTQ2WhcNMTcxMDI0MjIw
-# MTQ2WjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzAp
-# BgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNV
-# BAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUgT2JqZWN0
-# IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyiOLIjUemqAbPJ1J
-# 0D8MlzgWKbr4fYlbRVjvhHDtfhFN6RQxq0PjTQxRgWzwFQNKJCdU5ftKoM5N4YSj
-# Id6ZNavcSa6/McVnhDAQm+8H3HWoD030NVOxbjgD/Ih3HaV3/z9159nnvyxQEckR
-# ZfpJB2Kfk6aHqW3JnSvRe+XVZSufDVCe/vtxGSEwKCaNrsLc9pboUoYIC3oyzWoU
-# TZ65+c0H4paR8c8eK/mC914mBo6N0dQ512/bkSdaeY9YaQpGtW/h/W/FkbQRT3sC
-# pttLVlIjnkuY4r9+zvqhToPjxcfDYEf+XD8VGkAqle8Aa8hQ+M1qGdQjAye8OzbV
-# uUOw7wIDAQABo4IB6TCCAeUwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-# AQYwHQYDVR0OBBYEFNBOD0CZbLhLGW87KLjg44gHNKq3MB8GA1UdIwQYMBaAFE4L
-# 7xqkQFulF2mHMMo0aEPQQa7yMD0GCCsGAQUFBwEBBDEwLzAtBggrBgEFBQcwAoYh
-# aHR0cDovL3d3dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6Al
-# oCOGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0
-# cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysG
-# AQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
-# L3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
-# L2ludGVybWVkaWF0ZS5wZGYwEQYJYIZIAYb4QgEBBAQDAgABMFAGCWCGSAGG+EIB
-# DQRDFkFTdGFydENvbSBDbGFzcyAyIFByaW1hcnkgSW50ZXJtZWRpYXRlIE9iamVj
-# dCBTaWduaW5nIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAcnMLA3Va
-# N4OIE9l4QT5OEtZy5PByBit3oHiqQpgVEQo7DHRsjXD5H/IyTivpMikaaeRxIv95
-# baRd4hoUcMwDj4JIjC3WA9FoNFV31SMljEZa66G8RQECdMSSufgfDYu1XQ+cUKxh
-# D3EtLGGcFGjjML7EQv2Iol741rEsycXwIXcryxeiMbU2TPi7X3elbwQMc4JFlJ4B
-# y9FhBzuZB1DV2sN2irGVbC3G/1+S2doPDjL1CaElwRa/T0qkq2vvPxUgryAoCppU
-# FKViw5yoGYC+z1GaesWWiP1eFKAL0wI7IgSvLzU3y1Vp7vsYaxOVBqZtebFTWRHt
-# XjCsFrrQBngt0d33QbQRI5mwgzEp7XJ9xu5d6RVWM4TPRUsd+DDZpBHm9mszvi9g
-# VFb2ZG7qRRXCSqys4+u/NLBPbXi/m/lU00cODQTlC/euwjk9HQtRrXQ/zqsBJS6U
-# J+eLGw1qOfj+HVBl/ZQpfoLk7IoWlRQvRL1s7oirEaqPZUIWY/grXq9r6jDKAp3L
-# ZdKQpPOnnogtqlU4f7/kLjEJhrrc98mrOWmVMK/BuFRAfQ5oDUMnVmCzAzLMjKfG
-# cVW/iMew41yfhgKbwpfzm3LBr1Zv+pEBgcgW6onRLSAn3XHM0eNtz+AkxH6rRf6B
-# 2mYhLEEGLapH8R1AMAo4BbVFOZR5kXcMCwowggg1MIIHHaADAgECAgIEuDANBgkq
-# hkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0
-# ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
-# ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUg
-# T2JqZWN0IENBMB4XDTExMTIwMzE1MzQxOVoXDTEzMTIwMzE0NTgwN1owgYwxIDAe
-# BgNVBA0TFzU4MTc5Ni1HaDd4Zkp4a3hRU0lPNEUwMQswCQYDVQQGEwJERTEPMA0G
-# A1UECBMGQmVybGluMQ8wDQYDVQQHEwZCZXJsaW4xFjAUBgNVBAMTDUphbm5pcyBM
-# ZWlkZWwxITAfBgkqhkiG9w0BCQEWEmphbm5pc0BsZWlkZWwuaW5mbzCCAiIwDQYJ
-# KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMcPeABYdN7nPq/AkZ/EkyUBGx/l2Yui
-# Lfm8ZdLG0ulMb/kQL3fRY7sUjYPyn9S6PhqqlFnNoGHJvbbReCdUC9SIQYmOEjEA
-# raHfb7MZU10NjO4U2DdGucj2zuO5tYxKizizOJF0e4yRQZVxpUGdvkW/+GLjCNK5
-# L7mIv3Z1dagxDKHYZT74HXiS4VFUwHF1k36CwfM2vsetdm46bdgSwV+BCMmZICYT
-# IJAS9UQHD7kP4rik3bFWjUx08NtYYFAVOd/HwBnemUmJe4j3IhZHr0k1+eDG8hDH
-# KVvPgLJIoEjC4iMFk5GWsg5z2ngk0LLu3JZMtckHsnnmBPHQK8a3opUNd8hdMNJx
-# gOwKjQt2JZSGUdIEFCKVDqj0FmdnDMPfwy+FNRtpBMl1sz78dUFhSrnM0D8NXrqa
-# 4rG+2FoOXlmm1rb6AFtpjAKksHRpYcPk2DPGWp/1sWB+dUQkS3gOmwFzyqeTuXpT
-# 0juqd3iAxOGx1VRFQ1VHLLf3AzV4wljBau26I+tu7iXxesVucSdsdQu293jwc2kN
-# xK2JyHCoZH+RyytrwS0qw8t7rMOukU9gwP8mn3X6mgWlVUODMcHTULjSiCEtvyZ/
-# aafcwjUbt4ReEcnmuZtWIha86MTCX7U7e+cnpWG4sIHPnvVTaz9rm8RyBkIxtFCB
-# nQ3FnoQgyxeJAgMBAAGjggOdMIIDmTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIH
-# gDAuBgNVHSUBAf8EJDAiBggrBgEFBQcDAwYKKwYBBAGCNwIBFQYKKwYBBAGCNwoD
-# DTAdBgNVHQ4EFgQUWyCgrIWo8Ifvvm1/YTQIeMU9nc8wHwYDVR0jBBgwFoAU0E4P
-# QJlsuEsZbzsouODjiAc0qrcwggIhBgNVHSAEggIYMIICFDCCAhAGCysGAQQBgbU3
-# AQICMIIB/zAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9s
-# aWN5LnBkZjA0BggrBgEFBQcCARYoaHR0cDovL3d3dy5zdGFydHNzbC5jb20vaW50
-# ZXJtZWRpYXRlLnBkZjCB9wYIKwYBBQUHAgIwgeowJxYgU3RhcnRDb20gQ2VydGlm
-# aWNhdGlvbiBBdXRob3JpdHkwAwIBARqBvlRoaXMgY2VydGlmaWNhdGUgd2FzIGlz
-# c3VlZCBhY2NvcmRpbmcgdG8gdGhlIENsYXNzIDIgVmFsaWRhdGlvbiByZXF1aXJl
-# bWVudHMgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeSwgcmVsaWFuY2Ugb25seSBm
-# b3IgdGhlIGludGVuZGVkIHB1cnBvc2UgaW4gY29tcGxpYW5jZSBvZiB0aGUgcmVs
-# eWluZyBwYXJ0eSBvYmxpZ2F0aW9ucy4wgZwGCCsGAQUFBwICMIGPMCcWIFN0YXJ0
-# Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MAMCAQIaZExpYWJpbGl0eSBhbmQg
-# d2FycmFudGllcyBhcmUgbGltaXRlZCEgU2VlIHNlY3Rpb24gIkxlZ2FsIGFuZCBM
-# aW1pdGF0aW9ucyIgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeS4wNgYDVR0fBC8w
-# LTAroCmgJ4YlaHR0cDovL2NybC5zdGFydHNzbC5jb20vY3J0YzItY3JsLmNybDCB
-# iQYIKwYBBQUHAQEEfTB7MDcGCCsGAQUFBzABhitodHRwOi8vb2NzcC5zdGFydHNz
-# bC5jb20vc3ViL2NsYXNzMi9jb2RlL2NhMEAGCCsGAQUFBzAChjRodHRwOi8vYWlh
-# LnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3MyLmNvZGUuY2EuY3J0MCMGA1Ud
-# EgQcMBqGGGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOC
-# AQEAhrzEV6zwoEtKjnFRhCsjwiPykVpo5Eiye77Ve801rQDiRKgSCCiW6g3HqedL
-# OtaSs65Sj2pm3Viea4KR0TECLcbCTgsdaHqw2x1yXwWBQWZEaV6EB05lIwfr94P1
-# SFpV43zkuc+bbmA3+CRK45LOcCNH5Tqq7VGTCAK5iM7tvHwFlbQRl+I6VEL2mjpF
-# NsuRjDOVrv/9qw/a22YJ9R7Y1D0vUSs3IqZx2KMUaYDP7H2mSRxJO2nADQZBtriF
-# gTyfD3lYV12MlIi5CQwe3QC6DrrfSMP33i5Wa/OFJiQ27WPxmScYVhiqozpImFT4
-# PU9goiBv9RKXdgTmZE1PN0NQ5jGCAzUwggMxAgEBMIGTMIGMMQswCQYDVQQGEwJJ
-# TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0
-# YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3Mg
-# MiBQcmltYXJ5IEludGVybWVkaWF0ZSBPYmplY3QgQ0ECAgS4MAkGBSsOAwIaBQCg
-# eDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEE
-# AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJ
-# BDEWBBRVGw0FDSiaIi38dWteRUAg/9Pr6DANBgkqhkiG9w0BAQEFAASCAgCInvOZ
-# FdaNFzbf6trmFDZKMojyx3UjKMCqNjHVBbuKY0qXwFC/ElYDV1ShJ2CBZbdurydO
-# OQ6cIQ0KREOCwmX/xB49IlLHHUxNhEkVv7HGU3EKAFf9IBt9Yr7jikiR9cjIsfHK
-# 4cjkoKJL7g28yEpLLkHt1eo37f1Ga9lDWEa5Zq3U5yX+IwXhrUBm1h8Xr033FhTR
-# VEpuSz6LHtbrL/zgJnCzJ2ahjtJoYevdcWiNXffosJHFaSfYDDbiNsPRDH/1avmb
-# 5j/7BhP8BcBaR6Fp8tFbNGIcWHHGcjqLMnTc4w13b7b4pDhypqElBa4+lCmwdvv9
-# GydYtRgPz8GHeoBoKj30YBlMzRIfFYaIFGIC4Ai3UEXkuH9TxYohVbGm/W0Kl4Lb
-# RJ1FwiVcLcTOJdgNId2vQvKc+jtNrjcg5SP9h2v/C4aTx8tyc6tE3TOPh2f9b8DL
-# S+SbVArJpuJqrPTxDDoO1QNjTgLcdVYeZDE+r/NjaGZ6cMSd8db3EaG3ijD/0bud
-# SItbm/OlNVbQOFRR76D+ZNgPcU5iNZ3bmvQQIg6aSB9MHUpIE/SeCkNl9YeVk1/1
-# GFULgNMRmIYP4KLvu9ylh5Gu3hvD5VNhH6+FlXANwFy07uXks5uF8mfZVxVCnodG
-# xkNCx+6PsrA5Z7WP4pXcmYnMn97npP/Q9EHJWw==
-# SIG # End signature block
diff --git a/bin/activate_this.py b/bin/activate_this.py
deleted file mode 100644
index 444d3fd35df0c017f09ecde40c1c56d20ca48d2d..0000000000000000000000000000000000000000
--- a/bin/activate_this.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""By using execfile(this_file, dict(__file__=this_file)) you will
-activate this virtualenv environment.
-
-This can be used when you must use an existing Python interpreter, not
-the virtualenv bin/python
-"""
-
-try:
-    __file__
-except NameError:
-    raise AssertionError(
-        "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))"
-    )
-import os
-import site
-import sys
-
-old_os_path = os.environ.get("PATH", "")
-os.environ["PATH"] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path
-base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-if sys.platform == "win32":
-    site_packages = os.path.join(base, "Lib", "site-packages")
-else:
-    site_packages = os.path.join(base, "lib", "python%s" % sys.version[:3], "site-packages")
-prev_sys_path = list(sys.path)
-
-site.addsitedir(site_packages)
-sys.real_prefix = sys.prefix
-sys.prefix = base
-# Move the added items to the front of the path:
-new_sys_path = []
-for item in list(sys.path):
-    if item not in prev_sys_path:
-        new_sys_path.append(item)
-        sys.path.remove(item)
-sys.path[:0] = new_sys_path
diff --git a/bin/easy_install b/bin/easy_install
index c8c6fa0590ab11eba4ab9b39eaf4d5811d761391..050a1b5028e6a89b1c0985e8eba4cdaf156e5695 100755
--- a/bin/easy_install
+++ b/bin/easy_install
@@ -1,5 +1,4 @@
-#!/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell/bin/python
-
+#!/home/leo/Git/Chaos-Familien-Duell/bin/python
 # -*- coding: utf-8 -*-
 import re
 import sys
diff --git a/bin/easy_install-3.7 b/bin/easy_install-3.7
index c8c6fa0590ab11eba4ab9b39eaf4d5811d761391..050a1b5028e6a89b1c0985e8eba4cdaf156e5695 100755
--- a/bin/easy_install-3.7
+++ b/bin/easy_install-3.7
@@ -1,5 +1,4 @@
-#!/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell/bin/python
-
+#!/home/leo/Git/Chaos-Familien-Duell/bin/python
 # -*- coding: utf-8 -*-
 import re
 import sys
diff --git a/bin/wheel b/bin/flask
similarity index 61%
rename from bin/wheel
rename to bin/flask
index 3beae37b9f23f481edd7575923ca19f899972c0c..9696a8b58c838eb8ace7888db9b8660feff63df4 100755
--- a/bin/wheel
+++ b/bin/flask
@@ -1,10 +1,9 @@
-#!/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell/bin/python
-
+#!/home/leo/Git/Chaos-Familien-Duell/bin/python
 # -*- coding: utf-8 -*-
 import re
 import sys
 
-from wheel.cli import main
+from flask.cli import main
 
 if __name__ == '__main__':
     sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
diff --git a/bin/pip b/bin/pip
index 2a64bcf0405c084c2655071829fc885073aae314..be1b876f3c64280f581afafbf8a62ed772157d2f 100755
--- a/bin/pip
+++ b/bin/pip
@@ -1,5 +1,4 @@
-#!/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell/bin/python
-
+#!/home/leo/Git/Chaos-Familien-Duell/bin/python
 # -*- coding: utf-8 -*-
 import re
 import sys
diff --git a/bin/pip3 b/bin/pip3
index 2a64bcf0405c084c2655071829fc885073aae314..be1b876f3c64280f581afafbf8a62ed772157d2f 100755
--- a/bin/pip3
+++ b/bin/pip3
@@ -1,5 +1,4 @@
-#!/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell/bin/python
-
+#!/home/leo/Git/Chaos-Familien-Duell/bin/python
 # -*- coding: utf-8 -*-
 import re
 import sys
diff --git a/bin/pip3.7 b/bin/pip3.7
index 2a64bcf0405c084c2655071829fc885073aae314..be1b876f3c64280f581afafbf8a62ed772157d2f 100755
--- a/bin/pip3.7
+++ b/bin/pip3.7
@@ -1,5 +1,4 @@
-#!/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell/bin/python
-
+#!/home/leo/Git/Chaos-Familien-Duell/bin/python
 # -*- coding: utf-8 -*-
 import re
 import sys
diff --git a/bin/pwiz.py b/bin/pwiz.py
new file mode 100755
index 0000000000000000000000000000000000000000..d4b778b844e68b685150481313e55cdcc8f0a7ba
--- /dev/null
+++ b/bin/pwiz.py
@@ -0,0 +1,221 @@
+#!/home/leo/Git/Chaos-Familien-Duell/bin/python
+
+import datetime
+import sys
+from getpass import getpass
+from optparse import OptionParser
+
+from peewee import *
+from peewee import print_
+from peewee import __version__ as peewee_version
+from playhouse.reflection import *
+
+
+HEADER = """from peewee import *%s
+
+database = %s('%s'%s)
+"""
+
+BASE_MODEL = """\
+class BaseModel(Model):
+    class Meta:
+        database = database
+"""
+
+UNKNOWN_FIELD = """\
+class UnknownField(object):
+    def __init__(self, *_, **__): pass
+"""
+
+DATABASE_ALIASES = {
+    MySQLDatabase: ['mysql', 'mysqldb'],
+    PostgresqlDatabase: ['postgres', 'postgresql'],
+    SqliteDatabase: ['sqlite', 'sqlite3'],
+}
+
+DATABASE_MAP = dict((value, key)
+                    for key in DATABASE_ALIASES
+                    for value in DATABASE_ALIASES[key])
+
+def make_introspector(database_type, database_name, **kwargs):
+    if database_type not in DATABASE_MAP:
+        err('Unrecognized database, must be one of: %s' %
+            ', '.join(DATABASE_MAP.keys()))
+        sys.exit(1)
+
+    schema = kwargs.pop('schema', None)
+    DatabaseClass = DATABASE_MAP[database_type]
+    db = DatabaseClass(database_name, **kwargs)
+    return Introspector.from_database(db, schema=schema)
+
+def print_models(introspector, tables=None, preserve_order=False,
+                 include_views=False, ignore_unknown=False, snake_case=True):
+    database = introspector.introspect(table_names=tables,
+                                       include_views=include_views,
+                                       snake_case=snake_case)
+
+    db_kwargs = introspector.get_database_kwargs()
+    header = HEADER % (
+        introspector.get_additional_imports(),
+        introspector.get_database_class().__name__,
+        introspector.get_database_name(),
+        ', **%s' % repr(db_kwargs) if db_kwargs else '')
+    print_(header)
+
+    if not ignore_unknown:
+        print_(UNKNOWN_FIELD)
+
+    print_(BASE_MODEL)
+
+    def _print_table(table, seen, accum=None):
+        accum = accum or []
+        foreign_keys = database.foreign_keys[table]
+        for foreign_key in foreign_keys:
+            dest = foreign_key.dest_table
+
+            # In the event the destination table has already been pushed
+            # for printing, then we have a reference cycle.
+            if dest in accum and table not in accum:
+                print_('# Possible reference cycle: %s' % dest)
+
+            # If this is not a self-referential foreign key, and we have
+            # not already processed the destination table, do so now.
+            if dest not in seen and dest not in accum:
+                seen.add(dest)
+                if dest != table:
+                    _print_table(dest, seen, accum + [table])
+
+        print_('class %s(BaseModel):' % database.model_names[table])
+        columns = database.columns[table].items()
+        if not preserve_order:
+            columns = sorted(columns)
+        primary_keys = database.primary_keys[table]
+        for name, column in columns:
+            skip = all([
+                name in primary_keys,
+                name == 'id',
+                len(primary_keys) == 1,
+                column.field_class in introspector.pk_classes])
+            if skip:
+                continue
+            if column.primary_key and len(primary_keys) > 1:
+                # If we have a CompositeKey, then we do not want to explicitly
+                # mark the columns as being primary keys.
+                column.primary_key = False
+
+            is_unknown = column.field_class is UnknownField
+            if is_unknown and ignore_unknown:
+                disp = '%s - %s' % (column.name, column.raw_column_type or '?')
+                print_('    # %s' % disp)
+            else:
+                print_('    %s' % column.get_field())
+
+        print_('')
+        print_('    class Meta:')
+        print_('        table_name = \'%s\'' % table)
+        multi_column_indexes = database.multi_column_indexes(table)
+        if multi_column_indexes:
+            print_('        indexes = (')
+            for fields, unique in sorted(multi_column_indexes):
+                print_('            ((%s), %s),' % (
+                    ', '.join("'%s'" % field for field in fields),
+                    unique,
+                ))
+            print_('        )')
+
+        if introspector.schema:
+            print_('        schema = \'%s\'' % introspector.schema)
+        if len(primary_keys) > 1:
+            pk_field_names = sorted([
+                field.name for col, field in columns
+                if col in primary_keys])
+            pk_list = ', '.join("'%s'" % pk for pk in pk_field_names)
+            print_('        primary_key = CompositeKey(%s)' % pk_list)
+        elif not primary_keys:
+            print_('        primary_key = False')
+        print_('')
+
+        seen.add(table)
+
+    seen = set()
+    for table in sorted(database.model_names.keys()):
+        if table not in seen:
+            if not tables or table in tables:
+                _print_table(table, seen)
+
+def print_header(cmd_line, introspector):
+    timestamp = datetime.datetime.now()
+    print_('# Code generated by:')
+    print_('# python -m pwiz %s' % cmd_line)
+    print_('# Date: %s' % timestamp.strftime('%B %d, %Y %I:%M%p'))
+    print_('# Database: %s' % introspector.get_database_name())
+    print_('# Peewee version: %s' % peewee_version)
+    print_('')
+
+
+def err(msg):
+    sys.stderr.write('\033[91m%s\033[0m\n' % msg)
+    sys.stderr.flush()
+
+def get_option_parser():
+    parser = OptionParser(usage='usage: %prog [options] database_name')
+    ao = parser.add_option
+    ao('-H', '--host', dest='host')
+    ao('-p', '--port', dest='port', type='int')
+    ao('-u', '--user', dest='user')
+    ao('-P', '--password', dest='password', action='store_true')
+    engines = sorted(DATABASE_MAP)
+    ao('-e', '--engine', dest='engine', default='postgresql', choices=engines,
+       help=('Database type, e.g. sqlite, mysql or postgresql. Default '
+             'is "postgresql".'))
+    ao('-s', '--schema', dest='schema')
+    ao('-t', '--tables', dest='tables',
+       help=('Only generate the specified tables. Multiple table names should '
+             'be separated by commas.'))
+    ao('-v', '--views', dest='views', action='store_true',
+       help='Generate model classes for VIEWs in addition to tables.')
+    ao('-i', '--info', dest='info', action='store_true',
+       help=('Add database information and other metadata to top of the '
+             'generated file.'))
+    ao('-o', '--preserve-order', action='store_true', dest='preserve_order',
+       help='Model definition column ordering matches source table.')
+    ao('-I', '--ignore-unknown', action='store_true', dest='ignore_unknown',
+       help='Ignore fields whose type cannot be determined.')
+    ao('-L', '--legacy-naming', action='store_true', dest='legacy_naming',
+       help='Use legacy table- and column-name generation.')
+    return parser
+
+def get_connect_kwargs(options):
+    ops = ('host', 'port', 'user', 'schema')
+    kwargs = dict((o, getattr(options, o)) for o in ops if getattr(options, o))
+    if options.password:
+        kwargs['password'] = getpass()
+    return kwargs
+
+
+if __name__ == '__main__':
+    raw_argv = sys.argv
+
+    parser = get_option_parser()
+    options, args = parser.parse_args()
+
+    if len(args) < 1:
+        err('Missing required parameter "database"')
+        parser.print_help()
+        sys.exit(1)
+
+    connect = get_connect_kwargs(options)
+    database = args[-1]
+
+    tables = None
+    if options.tables:
+        tables = [table.strip() for table in options.tables.split(',')
+                  if table.strip()]
+
+    introspector = make_introspector(options.engine, database, **connect)
+    if options.info:
+        cmd_line = ' '.join(raw_argv[1:])
+        print_header(cmd_line, introspector)
+
+    print_models(introspector, tables, options.preserve_order, options.views,
+                 options.ignore_unknown, not options.legacy_naming)
diff --git a/bin/python-config b/bin/python-config
deleted file mode 100755
index 5c69bcff7ba2bdcfd6c02f1a27702bfd5a3b237b..0000000000000000000000000000000000000000
--- a/bin/python-config
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/home/reverend/Programmierung/git_projects/Chaos-Familien-Duell/bin/python
-
-import sys
-import getopt
-import sysconfig
-
-valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
-              'ldflags', 'help']
-
-if sys.version_info >= (3, 2):
-    valid_opts.insert(-1, 'extension-suffix')
-    valid_opts.append('abiflags')
-if sys.version_info >= (3, 3):
-    valid_opts.append('configdir')
-
-
-def exit_with_usage(code=1):
-    sys.stderr.write("Usage: {0} [{1}]\n".format(
-        sys.argv[0], '|'.join('--'+opt for opt in valid_opts)))
-    sys.exit(code)
-
-try:
-    opts, args = getopt.getopt(sys.argv[1:], '', valid_opts)
-except getopt.error:
-    exit_with_usage()
-
-if not opts:
-    exit_with_usage()
-
-pyver = sysconfig.get_config_var('VERSION')
-getvar = sysconfig.get_config_var
-
-opt_flags = [flag for (flag, val) in opts]
-
-if '--help' in opt_flags:
-    exit_with_usage(code=0)
-
-for opt in opt_flags:
-    if opt == '--prefix':
-        print(sysconfig.get_config_var('prefix'))
-
-    elif opt == '--exec-prefix':
-        print(sysconfig.get_config_var('exec_prefix'))
-
-    elif opt in ('--includes', '--cflags'):
-        flags = ['-I' + sysconfig.get_path('include'),
-                 '-I' + sysconfig.get_path('platinclude')]
-        if opt == '--cflags':
-            flags.extend(getvar('CFLAGS').split())
-        print(' '.join(flags))
-
-    elif opt in ('--libs', '--ldflags'):
-        abiflags = getattr(sys, 'abiflags', '')
-        libs = ['-lpython' + pyver + abiflags]
-        libs += getvar('LIBS').split()
-        libs += getvar('SYSLIBS').split()
-        # add the prefix/lib/pythonX.Y/config dir, but only if there is no
-        # shared library in prefix/lib/.
-        if opt == '--ldflags':
-            if not getvar('Py_ENABLE_SHARED'):
-                libs.insert(0, '-L' + getvar('LIBPL'))
-            if not getvar('PYTHONFRAMEWORK'):
-                libs.extend(getvar('LINKFORSHARED').split())
-        print(' '.join(libs))
-
-    elif opt == '--extension-suffix':
-        ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
-        if ext_suffix is None:
-            ext_suffix = sysconfig.get_config_var('SO')
-        print(ext_suffix)
-
-    elif opt == '--abiflags':
-        if not getattr(sys, 'abiflags', None):
-            exit_with_usage()
-        print(sys.abiflags)
-
-    elif opt == '--configdir':
-        print(sysconfig.get_config_var('LIBPL'))
diff --git a/bin/python3.7 b/bin/python3.7
deleted file mode 120000
index d8654aa0e2f2f3c1760e0fcbcbb52c1c5941fba7..0000000000000000000000000000000000000000
--- a/bin/python3.7
+++ /dev/null
@@ -1 +0,0 @@
-python
\ No newline at end of file
diff --git a/include/python3.7m b/include/python3.7m
deleted file mode 120000
index 4fe7f6cf9fba788818066956711299381de9403f..0000000000000000000000000000000000000000
--- a/include/python3.7m
+++ /dev/null
@@ -1 +0,0 @@
-/usr/include/python3.7m
\ No newline at end of file
diff --git a/lib64 b/lib64
new file mode 120000
index 0000000000000000000000000000000000000000..7951405f85a569efbacc12fccfee529ef1866602
--- /dev/null
+++ b/lib64
@@ -0,0 +1 @@
+lib
\ No newline at end of file
diff --git a/pyvenv.cfg b/pyvenv.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f967d3d150d978ff95052a3ac0498c12eb0534ce
--- /dev/null
+++ b/pyvenv.cfg
@@ -0,0 +1,3 @@
+home = /usr/bin
+include-system-site-packages = false
+version = 3.7.3