diff --git a/build b/build
old mode 100644
new mode 100755
index 7268f9f03d3eb2f74265fbd942642e9785930f30..298f3c32c64995871985c462d412f84c8d0a531e
--- a/build
+++ b/build
@@ -1,5 +1,6 @@
 #!/bin/bash
 
+docker() { podman "$@"; }
 err() { printf -- '%s[error]: %s\n' "$0" "$@" >&2; exit 2; }
 
 url="$( git remote get-url origin )"
diff --git a/run b/run
old mode 100644
new mode 100755
index ae1c9d118b154b67c5168e178d6a20aad7cba2c0..a5986ce5e56c518fde4fd3a1753741d73b8343cd
--- a/run
+++ b/run
@@ -1,4 +1,15 @@
 #!/bin/bash
+docker() { podman "$@"; }
+files=( httpd.conf )
+declare -i f=${#files[*]}
+sanity_check() {
+	for file in "${files[@]}"; do
+		[ -f "$file" ] && f=f-1 || echo "File: '$file' missing" >&2 
+	done
+	return "$f"
+}
+
+sanity_check || { echo "Sanity check failed! Are you in the directory with the solution?" >&2; exit 1; }
 
 tmp=$( mktemp )
 name=${tmp##*.}
@@ -71,19 +82,33 @@ rm -rf "${PROJECT}/.results" 2>/dev/null
 mkdir "${PROJECT}/.results" \
 || err "Unable to create '${PROJECT}/.results' directory"
 
-docker run -dit --name "${name}" "${image}" /bin/bash
-docker cp ~/.ssh/id_rsa "${name}":/root/.ssh/
-docker cp ~/.ACADEMY_GITLAB_ACCESS_TOKEN "${name}":/root/
-docker cp "${DIR}/run-local-academy" "${name}":/
-docker cp "${PROJECT}/." "${name}":/project
-[[ -n "${ACADEMY}" ]] \
-&& docker cp "${ACADEMY}/." "${name}":/academy
-docker exec -it "${name}" /run-local-academy "${command}"
-docker cp "${name}":/project/.results/. "${PROJECT}/.results/"
+docker run -dit \
+  --name "${name}" \
+  -v "$PWD:/mnt" \
+  -v "$DIR/test:/root/.bashrc" \
+  -v "$PWD/httpd.conf:/usr/local/apache2/conf/httpd.conf" \
+  -v "$PWD/htaccess:/var/www/main/users/alice/data/.htaccess" \
+  --add-host 'www.mycorp.net:127.0.0.2' \
+  --add-host 'mycorp.net:127.0.0.2' \
+  --add-host 'www.nocorp.net:127.0.0.3' \
+  --add-host 'nocorp.net:127.0.0.3' \
+  --add-host 'www.othercorp1.net:127.0.0.4' \
+  --add-host 'www.othercorp2.net:127.0.0.4' \
+  --add-host 'www.othercorp3.net:127.0.0.4' \
+  "${image}" \
+  bash
+#docker cp ~/.ssh/id_rsa "${name}":/root/.ssh/
+#docker cp ~/.ACADEMY_GITLAB_ACCESS_TOKEN "${name}":/root/
+#docker cp "${DIR}/run-local-academy" "${name}":/
+#docker cp "${PROJECT}/." "${name}":/project
+#[[ -n "${ACADEMY}" ]] \
+#&& docker cp "${ACADEMY}/." "${name}":/academy
+#docker exec -it "${name}" /run-local-academy "${command}"
+#docker cp "${name}":/project/.results/. "${PROJECT}/.results/"
 
 #echo "${name}"
 #exit
-#docker attach "$name"
+docker attach "$name"
 docker kill "${name}" &>/dev/null
 
 rm "${tmp}"
diff --git a/run-local-academy b/run-local-academy
deleted file mode 100644
index e1eef44e0b5446dd6e8af046af2569da8d3a3efe..0000000000000000000000000000000000000000
--- a/run-local-academy
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-export ACADEMY
-export ACADEMY_DIR='/academy'
-export ACADEMY_LANG="gallery"
-export ACADEMY_EDITABLE="@([01][0-9]-*|showreel)/@(render[123].jpg|video.mp4)"
-export CI_SERVER_HOST="gitlab.wr.cz"
-ACADEMY_BRANCH='lb'
-ACADEMY="${ACADEMY_DIR}/local-academy-shell"
-gitlab='gitlab.wr.cz'
-ACADEMY_REPO='https://github.com/InternetGuru/academy'
-
-ssh-keygen -F "${gitlab}" 2>/dev/null || ssh-keyscan "${gitlab}" >> ~/.ssh/known_hosts 2>/dev/null
-
-[[ -f "${ACADEMY_DIR}/academy" ]] \
-|| git clone --single-branch --branch "${ACADEMY_BRANCH}" "${ACADEMY_REPO}" "${ACADEMY_DIR}"
-
-"${ACADEMY}" "${1}"
diff --git a/test b/test
new file mode 100755
index 0000000000000000000000000000000000000000..da64675a940892fb831841e1221ca2a2e88c7493
--- /dev/null
+++ b/test
@@ -0,0 +1,81 @@
+cd /mnt
+
+################################################
+
+badge_generate() { printf -v x '%60s'; printf '%s\n' "${x// /-}" "$*"; }
+badge_init() { :; }
+
+################################################
+
+export LANG=C LC_ALL=C
+shopt -s nullglob
+HOST='http://localhost'
+
+badge_init 'Tests'
+
+info() {
+  printf '%s[info]: %s\n' "${0##*/}" "$*" >&2
+}
+err() {
+  printf '%s[error]: %s\n' "${0##*/}" "$*" >&2
+  exit 2
+}
+test_results() {
+  printf '%s[test]: %-30s\t[ %s ]\n' "${0##*/}" "${task} ${test_id}: ${1}" "${2}" >&2
+}
+url() {
+  case "${1}" in
+    /*) url="${HOST}${1// /}";;
+    *) url="${1// /}"
+  esac
+}
+equal() {
+  local test_name="${1}"
+  local expected="${2}"
+  local tested="${3}"
+  (( total++ ))
+  if [[ "${expected}" == "${tested}" ]]; then
+    test_results "${test_name}" "OK"
+    (( passed++ ))
+  else
+    test_results "${test_name}" "FAILED"
+    diff -s <( printf -- '%s\n' "${expected}" ) <( printf -- '%s\n' "${tested}" )
+  fi
+}
+test_status() {
+  equal 'Status' \
+    "$( sed -n '1p' "${test%_*}_s" )" \
+    "$( sed -n '1p' <<< "${output}" )"
+}
+test_headers() {
+  equal 'Headers' \
+    "$( sort "${test%_*}_h" )" \
+    "$( sed -n '2,/^$/p' <<< "${output}" | grep -f <( sed 's,^\([^:]*: \).*,^\1,' "${test%_*}_h" ) | sort )"
+}
+test_content() {
+  equal 'Content' \
+    "$( < "${test%_*}_c" )" \
+    "$( sed '1,/^$/d' <<< "${output}" )"
+}
+evaluate() {
+  local total=0
+  local passed=0
+  local output
+  local url
+  for test in .test*_url; do
+    [[ "${test}" =~ ([[:alnum:]:]+)_[^_]*$ ]]
+    test_id="${BASH_REMATCH[1]}"
+    url "$( < ${test} )"
+    output="$( curl -is "${url}" | tr -d '\r\0' )"
+    [[ -f "${test%_*}_s" ]] && test_status
+    [[ -f "${test%_*}_h" ]] && test_headers
+    [[ -f "${test%_*}_c" ]] && test_content
+  done
+  badge_generate "Tests" "${passed}/${total}"
+}
+
+# Start webserver
+httpd && echo Webserver started || echo Webeserver error
+
+# Run tests...
+evaluate