diff --git a/.ghci b/.ghci
index 8084f7e26ac06169ed8c33539cc1955c733aef3f..825dbc44eefd7299ac88daac92fb8372201ccea0 100644
--- a/.ghci
+++ b/.ghci
@@ -1 +1 @@
-:set -ihtools -ihtest
+:set -isrc -ihtest
diff --git a/.gitignore b/.gitignore
index 3dd98a05d7ccc98f77e286f1fc22c30cf550d70f..e9ed7e74cb1d35a09f66921051a91dca03a0cb2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,10 @@
 *.o
 *.hi
 *.hp
+*.tix
+*.prof
+*.stat
+.hpc/
 
 # /
 /Makefile
@@ -91,6 +95,9 @@
 /htest/hroller
 /htest/hscan
 /htest/hspace
+/htest/hpc-htools
+/htest/hpc-mon-collector
+/htest/test
 
 # tools
 /tools/kvm-ifup
@@ -112,28 +119,14 @@
 /scripts/gnt-network
 /scripts/gnt-storage
 
-# htools-specific rules
-/htools/apidoc
-/htools/.hpc
-/htools/coverage
-
-/htools/mon-collector
-/htools/htools
-/htools/hconfd
-/htools/ganeti-confd
-/htools/rpc-test
-/htest/hpc-htools
-/htest/hpc-mon-collector
-/htest/test
-/htools/*.prof*
-/htools/*.stat
-/htools/*.tix
-/htest/*.prof*
-/htest/*.stat
-/htest/*.tix
-/.hpc/
-/*.tix
+# haskell-specific rules
+/src/mon-collector
+/src/htools
+/src/hconfd
+/src/ganeti-confd
+/src/rpc-test
 
-/htools/Ganeti/Constants.hs
-/htools/Ganeti/Version.hs
+# automatically-built Haskell files
+/src/Ganeti/Constants.hs
+/src/Ganeti/Version.hs
 /htest/Test/Ganeti/TestImports.hs
diff --git a/Makefile.am b/Makefile.am
index 16f14f6c68df59212916768c1fe2949fb2feb722..4161c18611f8b54e6c9d236fc4f5a560bcf56acf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -55,16 +55,16 @@ myexeclibdir = $(pkglibdir)
 .DELETE_ON_ERROR:
 
 HTOOLS_DIRS = \
-	htools \
-	htools/Ganeti \
-	htools/Ganeti/Block \
-	htools/Ganeti/Block/Drbd \
-	htools/Ganeti/Confd \
-	htools/Ganeti/DataCollectors \
-	htools/Ganeti/HTools \
-	htools/Ganeti/HTools/Backend \
-	htools/Ganeti/HTools/Program \
-	htools/Ganeti/Query \
+	src \
+	src/Ganeti \
+	src/Ganeti/Block \
+	src/Ganeti/Block/Drbd \
+	src/Ganeti/Confd \
+	src/Ganeti/DataCollectors \
+	src/Ganeti/HTools \
+	src/Ganeti/HTools/Backend \
+	src/Ganeti/HTools/Program \
+	src/Ganeti/Query \
 	htest \
 	htest/Test \
 	htest/Test/Ganeti \
@@ -182,8 +182,8 @@ CLEANFILES = \
 	$(nodist_pkgpython_PYTHON) \
 	$(HS_ALL_PROGS) $(HS_BUILT_SRCS) \
 	$(HS_BUILT_TEST_HELPERS) \
-	htools/ganeti-confd \
-	.hpc/*.mix htools/*.tix htest/*.tix \
+	src/ganeti-confd \
+	.hpc/*.mix src/*.tix htest/*.tix \
 	doc/hs-lint.html
 
 GENERATED_FILES = \
@@ -195,7 +195,7 @@ HTOOLS_GENERATED_FILES =
 if WANT_HTOOLS
 HTOOLS_GENERATED_FILES += $(HS_PROGS)
 if ENABLE_CONFD
-HTOOLS_GENERATED_FILES += htools/hconfd htools/ganeti-confd
+HTOOLS_GENERATED_FILES += src/hconfd src/ganeti-confd
 endif
 endif
 
@@ -408,7 +408,7 @@ docrst = \
 	doc/virtual-cluster.rst \
 	doc/walkthrough.rst
 
-HS_PROGS = htools/htools htools/mon-collector
+HS_PROGS = src/htools src/mon-collector
 HS_BIN_ROLES = hbal hscan hspace hinfo hcheck hroller
 HS_HTOOLS_PROGS = $(HS_BIN_ROLES) hail
 
@@ -417,14 +417,14 @@ HS_ALL_PROGS = \
 	htest/hpc-htools \
 	htest/hpc-mon-collector \
 	htest/test \
-	htools/hconfd \
-	htools/rpc-test
+	src/hconfd \
+	src/rpc-test
 
 HS_PROG_SRCS = $(patsubst %,%.hs,$(HS_ALL_PROGS))
 HS_BUILT_TEST_HELPERS = $(HS_BIN_ROLES:%=htest/%) htest/hail
 
 HFLAGS = \
-	-O -Wall -Werror -ihtools \
+	-O -Wall -Werror -isrc \
 	-fwarn-monomorphism-restriction \
 	-fwarn-tabs \
 	$(GHC_BYVERSION_FLAGS)
@@ -444,74 +444,74 @@ HPCEXCL = --exclude Main \
 	--exclude Test.Ganeti.TestHTools \
 	--exclude Test.Ganeti.TestHelper \
 	--exclude Test.Ganeti.TestImports \
-	$(patsubst htools.%,--exclude Test.%,$(subst /,.,$(patsubst %.hs,%, $(HS_LIB_SRCS))))
+	$(patsubst src.%,--exclude Test.%,$(subst /,.,$(patsubst %.hs,%, $(HS_LIB_SRCS))))
 
 HS_LIB_SRCS = \
-	htools/Ganeti/Block/Drbd/Types.hs \
-	htools/Ganeti/Block/Drbd/Parser.hs \
-	htools/Ganeti/BasicTypes.hs \
-	htools/Ganeti/Common.hs \
-	htools/Ganeti/Compat.hs \
-	htools/Ganeti/Confd/Client.hs \
-	htools/Ganeti/Confd/Server.hs \
-	htools/Ganeti/Confd/Types.hs \
-	htools/Ganeti/Confd/Utils.hs \
-	htools/Ganeti/Config.hs \
-	htools/Ganeti/Daemon.hs \
-	htools/Ganeti/DataCollectors/CLI.hs \
-	htools/Ganeti/DataCollectors/Drbd.hs \
-	htools/Ganeti/DataCollectors/Program.hs \
-	htools/Ganeti/Errors.hs \
-	htools/Ganeti/HTools/Backend/IAlloc.hs \
-	htools/Ganeti/HTools/Backend/Luxi.hs \
-	htools/Ganeti/HTools/Backend/Rapi.hs \
-	htools/Ganeti/HTools/Backend/Simu.hs \
-	htools/Ganeti/HTools/Backend/Text.hs \
-	htools/Ganeti/HTools/CLI.hs \
-	htools/Ganeti/HTools/Cluster.hs \
-	htools/Ganeti/HTools/Container.hs \
-	htools/Ganeti/HTools/ExtLoader.hs \
-	htools/Ganeti/HTools/Graph.hs \
-	htools/Ganeti/HTools/Group.hs \
-	htools/Ganeti/HTools/Instance.hs \
-	htools/Ganeti/HTools/Loader.hs \
-	htools/Ganeti/HTools/Node.hs \
-	htools/Ganeti/HTools/PeerMap.hs \
-	htools/Ganeti/HTools/Program.hs \
-	htools/Ganeti/HTools/Program/Hail.hs \
-	htools/Ganeti/HTools/Program/Hbal.hs \
-	htools/Ganeti/HTools/Program/Hcheck.hs \
-	htools/Ganeti/HTools/Program/Hinfo.hs \
-	htools/Ganeti/HTools/Program/Hscan.hs \
-	htools/Ganeti/HTools/Program/Hspace.hs \
-	htools/Ganeti/HTools/Program/Hroller.hs \
-	htools/Ganeti/HTools/Types.hs \
-	htools/Ganeti/Hash.hs \
-	htools/Ganeti/JQueue.hs \
-	htools/Ganeti/JSON.hs \
-	htools/Ganeti/Jobs.hs \
-	htools/Ganeti/Logging.hs \
-	htools/Ganeti/Luxi.hs \
-	htools/Ganeti/Network.hs \
-	htools/Ganeti/Objects.hs \
-	htools/Ganeti/OpCodes.hs \
-	htools/Ganeti/OpParams.hs \
-	htools/Ganeti/Path.hs \
-	htools/Ganeti/Query/Common.hs \
-	htools/Ganeti/Query/Filter.hs \
-	htools/Ganeti/Query/Group.hs \
-	htools/Ganeti/Query/Job.hs \
-	htools/Ganeti/Query/Language.hs \
-	htools/Ganeti/Query/Node.hs \
-	htools/Ganeti/Query/Query.hs \
-	htools/Ganeti/Query/Server.hs \
-	htools/Ganeti/Query/Types.hs \
-	htools/Ganeti/Rpc.hs \
-	htools/Ganeti/Runtime.hs \
-	htools/Ganeti/Ssconf.hs \
-	htools/Ganeti/THH.hs \
-	htools/Ganeti/Types.hs \
-	htools/Ganeti/Utils.hs
+	src/Ganeti/Block/Drbd/Types.hs \
+	src/Ganeti/Block/Drbd/Parser.hs \
+	src/Ganeti/BasicTypes.hs \
+	src/Ganeti/Common.hs \
+	src/Ganeti/Compat.hs \
+	src/Ganeti/Confd/Client.hs \
+	src/Ganeti/Confd/Server.hs \
+	src/Ganeti/Confd/Types.hs \
+	src/Ganeti/Confd/Utils.hs \
+	src/Ganeti/Config.hs \
+	src/Ganeti/Daemon.hs \
+	src/Ganeti/DataCollectors/CLI.hs \
+	src/Ganeti/DataCollectors/Drbd.hs \
+	src/Ganeti/DataCollectors/Program.hs \
+	src/Ganeti/Errors.hs \
+	src/Ganeti/HTools/Backend/IAlloc.hs \
+	src/Ganeti/HTools/Backend/Luxi.hs \
+	src/Ganeti/HTools/Backend/Rapi.hs \
+	src/Ganeti/HTools/Backend/Simu.hs \
+	src/Ganeti/HTools/Backend/Text.hs \
+	src/Ganeti/HTools/CLI.hs \
+	src/Ganeti/HTools/Cluster.hs \
+	src/Ganeti/HTools/Container.hs \
+	src/Ganeti/HTools/ExtLoader.hs \
+	src/Ganeti/HTools/Graph.hs \
+	src/Ganeti/HTools/Group.hs \
+	src/Ganeti/HTools/Instance.hs \
+	src/Ganeti/HTools/Loader.hs \
+	src/Ganeti/HTools/Node.hs \
+	src/Ganeti/HTools/PeerMap.hs \
+	src/Ganeti/HTools/Program.hs \
+	src/Ganeti/HTools/Program/Hail.hs \
+	src/Ganeti/HTools/Program/Hbal.hs \
+	src/Ganeti/HTools/Program/Hcheck.hs \
+	src/Ganeti/HTools/Program/Hinfo.hs \
+	src/Ganeti/HTools/Program/Hscan.hs \
+	src/Ganeti/HTools/Program/Hspace.hs \
+	src/Ganeti/HTools/Program/Hroller.hs \
+	src/Ganeti/HTools/Types.hs \
+	src/Ganeti/Hash.hs \
+	src/Ganeti/JQueue.hs \
+	src/Ganeti/JSON.hs \
+	src/Ganeti/Jobs.hs \
+	src/Ganeti/Logging.hs \
+	src/Ganeti/Luxi.hs \
+	src/Ganeti/Network.hs \
+	src/Ganeti/Objects.hs \
+	src/Ganeti/OpCodes.hs \
+	src/Ganeti/OpParams.hs \
+	src/Ganeti/Path.hs \
+	src/Ganeti/Query/Common.hs \
+	src/Ganeti/Query/Filter.hs \
+	src/Ganeti/Query/Group.hs \
+	src/Ganeti/Query/Job.hs \
+	src/Ganeti/Query/Language.hs \
+	src/Ganeti/Query/Node.hs \
+	src/Ganeti/Query/Query.hs \
+	src/Ganeti/Query/Server.hs \
+	src/Ganeti/Query/Types.hs \
+	src/Ganeti/Rpc.hs \
+	src/Ganeti/Runtime.hs \
+	src/Ganeti/Ssconf.hs \
+	src/Ganeti/THH.hs \
+	src/Ganeti/Types.hs \
+	src/Ganeti/Utils.hs
 
 HS_TEST_SRCS = \
 	htest/Test/Ganeti/Attoparsec.hs \
@@ -557,8 +557,8 @@ HS_LIBTEST_SRCS = $(HS_LIB_SRCS) $(HS_TEST_SRCS)
 
 HS_BUILT_SRCS = \
 	htest/Test/Ganeti/TestImports.hs \
-	htools/Ganeti/Constants.hs \
-	htools/Ganeti/Version.hs
+	src/Ganeti/Constants.hs \
+	src/Ganeti/Version.hs
 HS_BUILT_SRCS_IN = $(patsubst %,%.in,$(HS_BUILT_SRCS))
 
 $(RUN_IN_TEMPDIR): | stamp-directories
@@ -658,7 +658,7 @@ qa_scripts = \
 
 bin_SCRIPTS =
 if WANT_HTOOLS
-bin_SCRIPTS += $(filter-out htools/hail,$(HS_PROGS))
+bin_SCRIPTS += $(filter-out src/hail,$(HS_PROGS))
 install-exec-hook:
 	@mkdir_p@ $(DESTDIR)$(iallocatorsdir)
 # FIXME: this is a hardcoded logic, instead of auto-resolving
@@ -725,10 +725,10 @@ nodist_sbin_SCRIPTS = \
 	daemons/ganeti-cleaner
 
 if ENABLE_CONFD
-htools/ganeti-confd: htools/hconfd
+src/ganeti-confd: src/hconfd
 	cp -f $< $@
 
-nodist_sbin_SCRIPTS += htools/ganeti-confd
+nodist_sbin_SCRIPTS += src/ganeti-confd
 endif
 
 python_scripts = \
@@ -770,7 +770,7 @@ myexeclib_SCRIPTS = \
 	daemons/daemon-util \
 	tools/kvm-ifup \
 	$(pkglib_python_scripts) \
-	htools/mon-collector
+	src/mon-collector
 
 nodist_myexeclib_SCRIPTS = \
 	$(nodist_pkglib_python_scripts)
@@ -826,7 +826,7 @@ EXTRA_DIST = \
 	$(qa_scripts) \
 	$(HS_LIBTEST_SRCS) $(HS_BUILT_SRCS_IN) \
 	$(HS_PROG_SRCS) \
-	htools/lint-hints.hs \
+	src/lint-hints.hs \
 	htest/cli-tests-defs.sh \
 	htest/offline-test.sh \
 	.ghci
@@ -1252,13 +1252,13 @@ regen-vcs-version:
 	  fi; \
 	fi
 
-htools/Ganeti/Version.hs: htools/Ganeti/Version.hs.in \
+src/Ganeti/Version.hs: src/Ganeti/Version.hs.in \
 	vcs-version $(built_base_sources)
 	set -e; \
 	VCSVER=`cat $(abs_top_srcdir)/vcs-version`; \
 	sed -e "s/%ver%/$$VCSVER/" < $< > $@
 
-htools/Ganeti/Constants.hs: htools/Ganeti/Constants.hs.in \
+src/Ganeti/Constants.hs: src/Ganeti/Constants.hs.in \
 	lib/constants.py lib/_autoconf.py lib/luxi.py lib/errors.py \
 	lib/jstore.py $(RUN_IN_TEMPDIR)\
 	$(CONVERT_CONSTANTS) $(built_base_sources) \
@@ -1273,7 +1273,7 @@ htest/Test/Ganeti/TestImports.hs: htest/Test/Ganeti/TestImports.hs.in \
 	set -e; \
 	{ cat $< ; \
 	  echo ; \
-	  for name in $(filter-out Ganeti.THH,$(subst /,.,$(patsubst %.hs,%,$(patsubst htools/%,%,$(HS_LIB_SRCS))))) ; do \
+	  for name in $(filter-out Ganeti.THH,$(subst /,.,$(patsubst %.hs,%,$(patsubst src/%,%,$(HS_LIB_SRCS))))) ; do \
 	    echo "import $$name ()" ; \
 	  done ; \
 	} > $@
@@ -1604,9 +1604,9 @@ pep8: $(GENERATED_FILES)
 	  --repeat $(pep8_python_code)
 
 # FIXME: remove ignore "Use void" when GHC 6.x is deprecated
-HLINT_EXCLUDES = htools/Ganeti/THH.hs htest/hpc-htools.hs
+HLINT_EXCLUDES = src/Ganeti/THH.hs htest/hpc-htools.hs
 .PHONY: hlint
-hlint: $(HS_BUILT_SRCS) htools/lint-hints.hs
+hlint: $(HS_BUILT_SRCS) src/lint-hints.hs
 	@test -n "$(HLINT)" || { echo 'hlint' not found during configure; exit 1; }
 	if tty -s; then C="-c"; else C=""; fi; \
 	$(HLINT) --utf8 --report=doc/hs-lint.html --cross $$C \
@@ -1614,7 +1614,7 @@ hlint: $(HS_BUILT_SRCS) htools/lint-hints.hs
 	  --ignore "Use &&&" \
 	  --ignore "Use void" \
 	  --ignore "Reduce duplication" \
-	  --hint htools/lint-hints \
+	  --hint src/lint-hints \
 	  $(filter-out $(HLINT_EXCLUDES),$(HS_LIBTEST_SRCS) $(HS_PROG_SRCS))
 
 # a dist hook rule for updating the vcs-version file; this is
@@ -1711,7 +1711,7 @@ hs-apidoc: $(HS_BUILT_SRCS)
 	$(LN_S) ../hscolour.css $(APIDOC_HS_DIR)/Ganeti/HTools/hscolour.css
 	$(LN_S) ../hscolour.css $(APIDOC_HS_DIR)/Ganeti/Confd/hscolour.css
 	set -e ; \
-	cd htools; \
+	cd src; \
 	if [ "$(HTOOLS_NOCURL)" ]; \
 	then OPTGHC="--optghc=$(HTOOLS_NOCURL)"; \
 	else OPTGHC=""; \
@@ -1722,7 +1722,7 @@ hs-apidoc: $(HS_BUILT_SRCS)
 	if [ "$(HTOOLS_REGEX_PCRE)" ]; \
 	then OPTGHC="$$OPTGHC --optghc=$(HTOOLS_REGEX_PCRE)"; \
 	fi; \
-	RELSRCS="$(HS_LIB_SRCS:htools/%=%) $(patsubst htools/%,%,$(filter htools/%,$(HS_BUILT_SRCS)))"; \
+	RELSRCS="$(HS_LIB_SRCS:src/%=%) $(patsubst src/%,%,$(filter src/%,$(HS_BUILT_SRCS)))"; \
 	for file in $$RELSRCS; do \
 	  hfile=`echo $$file|sed 's/\\.hs$$//'`.html; \
 	  $(HSCOLOUR) -css -anchor $$file > ../$(APIDOC_HS_DIR)/$$hfile ; \
@@ -1732,7 +1732,7 @@ hs-apidoc: $(HS_BUILT_SRCS)
 	  --source-module="%{MODULE/.//}.html" \
 	  --source-entity="%{MODULE/.//}.html#%{NAME}" \
 	  $$OPTGHC \
-	  $(filter-out Ganeti/HTools/ExtLoader.hs,$(HS_LIB_SRCS:htools/%=%))
+	  $(filter-out Ganeti/HTools/ExtLoader.hs,$(HS_LIB_SRCS:src/%=%))
 
 .PHONY: TAGS
 TAGS: $(GENERATED_FILES)
@@ -1781,11 +1781,11 @@ hs-coverage: $(haskell_tests) htest/hpc-htools htest/hpc-mon-collector
 .PHONY: live-test
 live-test: all
 	set -e ; \
-	cd htools; \
+	cd src; \
 	rm -f .hpc; $(LN_S) ../.hpc .hpc; \
 	rm -f *.tix *.mix; \
 	./live-test.sh; \
-	hpc sum --union $(HPCEXCL) $(addsuffix .tix,$(HS_PROGS:htools/%=%)) \
+	hpc sum --union $(HPCEXCL) $(addsuffix .tix,$(HS_PROGS:src/%=%)) \
 	  --output=live-test.tix ; \
 	@mkdir_p@ ../$(COVERAGE_HS_DIR) ; \
 	hpc markup --destdir=../$(COVERAGE_HS_DIR) live-test \
diff --git a/autotools/build-bash-completion b/autotools/build-bash-completion
index 7ef48ffaaaa6e83e64f9830059165f73c5979dea..7e24db98fa58d108afbc9b0241e4673a190336d8 100755
--- a/autotools/build-bash-completion
+++ b/autotools/build-bash-completion
@@ -759,7 +759,7 @@ def WriteHaskellCompletion(sw, script, htools=True, debug=True):
 
   """
   if htools:
-    cmd = "./htools/htools"
+    cmd = "./src/htools"
     env = {"HTOOLS": script}
     script_name = script
     func_name = "htools_%s" % script
@@ -854,12 +854,12 @@ def main():
 
   # ganeti-confd, if enabled
   if _autoconf.ENABLE_CONFD:
-    WriteHaskellCompletion(sw, "htools/ganeti-confd", htools=False,
+    WriteHaskellCompletion(sw, "src/ganeti-confd", htools=False,
                            debug=debug)
 
   # mon-collector, if monitoring is enabled
   if _autoconf.ENABLE_MONITORING:
-    WriteHaskellCmdCompletion(sw, "htools/mon-collector", debug=debug)
+    WriteHaskellCmdCompletion(sw, "src/mon-collector", debug=debug)
 
   # Reset extglob to original value
   sw.Write("[[ -n \"$gnt_shopt_extglob\" ]] && $gnt_shopt_extglob")
diff --git a/autotools/run-in-tempdir b/autotools/run-in-tempdir
index 202844e8ff9815fee167b746cd49acd98fcf2bfe..86f643944bdd05228e7ff1bb3cb74700c45aee60 100755
--- a/autotools/run-in-tempdir
+++ b/autotools/run-in-tempdir
@@ -16,10 +16,10 @@ ln -s $PWD/doc/examples $tmpdir/doc
 mv $tmpdir/lib $tmpdir/ganeti
 ln -T -s $tmpdir/ganeti $tmpdir/lib
 
-mkdir -p $tmpdir/htools $tmpdir/htest
+mkdir -p $tmpdir/src $tmpdir/htest
 for hfile in htools ganeti-confd mon-collector; do
-  if [ -e htools/$hfile ]; then
-    ln -s $PWD/htools/$hfile $tmpdir/htools/
+  if [ -e src/$hfile ]; then
+    ln -s $PWD/src/$hfile $tmpdir/src/
   fi
 done
 
diff --git a/doc/devnotes.rst b/doc/devnotes.rst
index bf8cddfb1fc12457464d08def67e83a6417568f3..674442580c4f323b6de19f3b73f5e2ae1e9e3da5 100644
--- a/doc/devnotes.rst
+++ b/doc/devnotes.rst
@@ -134,7 +134,7 @@ Or, more interactively::
 
   $ ghci
   Ξ»> :set -ddump-splices
-  Ξ»> :l htools/Ganeti/Objects.hs
+  Ξ»> :l src/Ganeti/Objects.hs
 
 And you will get the spliced code as the module is loaded.
 
@@ -150,9 +150,9 @@ build profiling code. The recommended way is to run ``make hs-prof``,
 or alternatively the manual sequence is::
 
   $ make clean
-  $ make htools/htools HEXTRA="-osuf .o"
-  $ rm htools/htools
-  $ make htools/htools HEXTRA="-osuf .prof_o -prof -auto-all"
+  $ make src/htools HEXTRA="-osuf .o"
+  $ rm src/htools
+  $ make src/htools HEXTRA="-osuf .prof_o -prof -auto-all"
 
 This will build the binary twice, per the TemplateHaskell
 documentation, the second one with profiling enabled.
diff --git a/htest/hpc-htools.hs b/htest/hpc-htools.hs
index 2d49067c19206ff1fda6e199f9bf763544e82074..edd10816f5adf396f9334379feb160d62f8866cd 120000
--- a/htest/hpc-htools.hs
+++ b/htest/hpc-htools.hs
@@ -1 +1 @@
-../htools/htools.hs
\ No newline at end of file
+../src/htools.hs
\ No newline at end of file
diff --git a/htest/hpc-mon-collector.hs b/htest/hpc-mon-collector.hs
index 9abb068298abc552d2f716f47ed9a882083a1561..1a34a1a26a1dc328c428a301541c13be048069a3 120000
--- a/htest/hpc-mon-collector.hs
+++ b/htest/hpc-mon-collector.hs
@@ -1 +1 @@
-../htools/mon-collector.hs
\ No newline at end of file
+../src/mon-collector.hs
\ No newline at end of file
diff --git a/htools/Ganeti/BasicTypes.hs b/src/Ganeti/BasicTypes.hs
similarity index 100%
rename from htools/Ganeti/BasicTypes.hs
rename to src/Ganeti/BasicTypes.hs
diff --git a/htools/Ganeti/Block/Drbd/Parser.hs b/src/Ganeti/Block/Drbd/Parser.hs
similarity index 100%
rename from htools/Ganeti/Block/Drbd/Parser.hs
rename to src/Ganeti/Block/Drbd/Parser.hs
diff --git a/htools/Ganeti/Block/Drbd/Types.hs b/src/Ganeti/Block/Drbd/Types.hs
similarity index 100%
rename from htools/Ganeti/Block/Drbd/Types.hs
rename to src/Ganeti/Block/Drbd/Types.hs
diff --git a/htools/Ganeti/Common.hs b/src/Ganeti/Common.hs
similarity index 100%
rename from htools/Ganeti/Common.hs
rename to src/Ganeti/Common.hs
diff --git a/htools/Ganeti/Compat.hs b/src/Ganeti/Compat.hs
similarity index 100%
rename from htools/Ganeti/Compat.hs
rename to src/Ganeti/Compat.hs
diff --git a/htools/Ganeti/Confd/Client.hs b/src/Ganeti/Confd/Client.hs
similarity index 100%
rename from htools/Ganeti/Confd/Client.hs
rename to src/Ganeti/Confd/Client.hs
diff --git a/htools/Ganeti/Confd/Server.hs b/src/Ganeti/Confd/Server.hs
similarity index 100%
rename from htools/Ganeti/Confd/Server.hs
rename to src/Ganeti/Confd/Server.hs
diff --git a/htools/Ganeti/Confd/Types.hs b/src/Ganeti/Confd/Types.hs
similarity index 100%
rename from htools/Ganeti/Confd/Types.hs
rename to src/Ganeti/Confd/Types.hs
diff --git a/htools/Ganeti/Confd/Utils.hs b/src/Ganeti/Confd/Utils.hs
similarity index 100%
rename from htools/Ganeti/Confd/Utils.hs
rename to src/Ganeti/Confd/Utils.hs
diff --git a/htools/Ganeti/Config.hs b/src/Ganeti/Config.hs
similarity index 100%
rename from htools/Ganeti/Config.hs
rename to src/Ganeti/Config.hs
diff --git a/htools/Ganeti/Constants.hs.in b/src/Ganeti/Constants.hs.in
similarity index 100%
rename from htools/Ganeti/Constants.hs.in
rename to src/Ganeti/Constants.hs.in
diff --git a/htools/Ganeti/Daemon.hs b/src/Ganeti/Daemon.hs
similarity index 100%
rename from htools/Ganeti/Daemon.hs
rename to src/Ganeti/Daemon.hs
diff --git a/htools/Ganeti/DataCollectors/CLI.hs b/src/Ganeti/DataCollectors/CLI.hs
similarity index 100%
rename from htools/Ganeti/DataCollectors/CLI.hs
rename to src/Ganeti/DataCollectors/CLI.hs
diff --git a/htools/Ganeti/DataCollectors/Drbd.hs b/src/Ganeti/DataCollectors/Drbd.hs
similarity index 100%
rename from htools/Ganeti/DataCollectors/Drbd.hs
rename to src/Ganeti/DataCollectors/Drbd.hs
diff --git a/htools/Ganeti/DataCollectors/Program.hs b/src/Ganeti/DataCollectors/Program.hs
similarity index 100%
rename from htools/Ganeti/DataCollectors/Program.hs
rename to src/Ganeti/DataCollectors/Program.hs
diff --git a/htools/Ganeti/Errors.hs b/src/Ganeti/Errors.hs
similarity index 100%
rename from htools/Ganeti/Errors.hs
rename to src/Ganeti/Errors.hs
diff --git a/htools/Ganeti/HTools/Backend/IAlloc.hs b/src/Ganeti/HTools/Backend/IAlloc.hs
similarity index 100%
rename from htools/Ganeti/HTools/Backend/IAlloc.hs
rename to src/Ganeti/HTools/Backend/IAlloc.hs
diff --git a/htools/Ganeti/HTools/Backend/Luxi.hs b/src/Ganeti/HTools/Backend/Luxi.hs
similarity index 100%
rename from htools/Ganeti/HTools/Backend/Luxi.hs
rename to src/Ganeti/HTools/Backend/Luxi.hs
diff --git a/htools/Ganeti/HTools/Backend/Rapi.hs b/src/Ganeti/HTools/Backend/Rapi.hs
similarity index 100%
rename from htools/Ganeti/HTools/Backend/Rapi.hs
rename to src/Ganeti/HTools/Backend/Rapi.hs
diff --git a/htools/Ganeti/HTools/Backend/Simu.hs b/src/Ganeti/HTools/Backend/Simu.hs
similarity index 100%
rename from htools/Ganeti/HTools/Backend/Simu.hs
rename to src/Ganeti/HTools/Backend/Simu.hs
diff --git a/htools/Ganeti/HTools/Backend/Text.hs b/src/Ganeti/HTools/Backend/Text.hs
similarity index 100%
rename from htools/Ganeti/HTools/Backend/Text.hs
rename to src/Ganeti/HTools/Backend/Text.hs
diff --git a/htools/Ganeti/HTools/CLI.hs b/src/Ganeti/HTools/CLI.hs
similarity index 100%
rename from htools/Ganeti/HTools/CLI.hs
rename to src/Ganeti/HTools/CLI.hs
diff --git a/htools/Ganeti/HTools/Cluster.hs b/src/Ganeti/HTools/Cluster.hs
similarity index 100%
rename from htools/Ganeti/HTools/Cluster.hs
rename to src/Ganeti/HTools/Cluster.hs
diff --git a/htools/Ganeti/HTools/Container.hs b/src/Ganeti/HTools/Container.hs
similarity index 100%
rename from htools/Ganeti/HTools/Container.hs
rename to src/Ganeti/HTools/Container.hs
diff --git a/htools/Ganeti/HTools/ExtLoader.hs b/src/Ganeti/HTools/ExtLoader.hs
similarity index 100%
rename from htools/Ganeti/HTools/ExtLoader.hs
rename to src/Ganeti/HTools/ExtLoader.hs
diff --git a/htools/Ganeti/HTools/Graph.hs b/src/Ganeti/HTools/Graph.hs
similarity index 100%
rename from htools/Ganeti/HTools/Graph.hs
rename to src/Ganeti/HTools/Graph.hs
diff --git a/htools/Ganeti/HTools/Group.hs b/src/Ganeti/HTools/Group.hs
similarity index 100%
rename from htools/Ganeti/HTools/Group.hs
rename to src/Ganeti/HTools/Group.hs
diff --git a/htools/Ganeti/HTools/Instance.hs b/src/Ganeti/HTools/Instance.hs
similarity index 100%
rename from htools/Ganeti/HTools/Instance.hs
rename to src/Ganeti/HTools/Instance.hs
diff --git a/htools/Ganeti/HTools/Loader.hs b/src/Ganeti/HTools/Loader.hs
similarity index 100%
rename from htools/Ganeti/HTools/Loader.hs
rename to src/Ganeti/HTools/Loader.hs
diff --git a/htools/Ganeti/HTools/Node.hs b/src/Ganeti/HTools/Node.hs
similarity index 100%
rename from htools/Ganeti/HTools/Node.hs
rename to src/Ganeti/HTools/Node.hs
diff --git a/htools/Ganeti/HTools/PeerMap.hs b/src/Ganeti/HTools/PeerMap.hs
similarity index 100%
rename from htools/Ganeti/HTools/PeerMap.hs
rename to src/Ganeti/HTools/PeerMap.hs
diff --git a/htools/Ganeti/HTools/Program.hs b/src/Ganeti/HTools/Program.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program.hs
rename to src/Ganeti/HTools/Program.hs
diff --git a/htools/Ganeti/HTools/Program/Hail.hs b/src/Ganeti/HTools/Program/Hail.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program/Hail.hs
rename to src/Ganeti/HTools/Program/Hail.hs
diff --git a/htools/Ganeti/HTools/Program/Hbal.hs b/src/Ganeti/HTools/Program/Hbal.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program/Hbal.hs
rename to src/Ganeti/HTools/Program/Hbal.hs
diff --git a/htools/Ganeti/HTools/Program/Hcheck.hs b/src/Ganeti/HTools/Program/Hcheck.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program/Hcheck.hs
rename to src/Ganeti/HTools/Program/Hcheck.hs
diff --git a/htools/Ganeti/HTools/Program/Hinfo.hs b/src/Ganeti/HTools/Program/Hinfo.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program/Hinfo.hs
rename to src/Ganeti/HTools/Program/Hinfo.hs
diff --git a/htools/Ganeti/HTools/Program/Hroller.hs b/src/Ganeti/HTools/Program/Hroller.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program/Hroller.hs
rename to src/Ganeti/HTools/Program/Hroller.hs
diff --git a/htools/Ganeti/HTools/Program/Hscan.hs b/src/Ganeti/HTools/Program/Hscan.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program/Hscan.hs
rename to src/Ganeti/HTools/Program/Hscan.hs
diff --git a/htools/Ganeti/HTools/Program/Hspace.hs b/src/Ganeti/HTools/Program/Hspace.hs
similarity index 100%
rename from htools/Ganeti/HTools/Program/Hspace.hs
rename to src/Ganeti/HTools/Program/Hspace.hs
diff --git a/htools/Ganeti/HTools/Types.hs b/src/Ganeti/HTools/Types.hs
similarity index 100%
rename from htools/Ganeti/HTools/Types.hs
rename to src/Ganeti/HTools/Types.hs
diff --git a/htools/Ganeti/Hash.hs b/src/Ganeti/Hash.hs
similarity index 100%
rename from htools/Ganeti/Hash.hs
rename to src/Ganeti/Hash.hs
diff --git a/htools/Ganeti/JQueue.hs b/src/Ganeti/JQueue.hs
similarity index 100%
rename from htools/Ganeti/JQueue.hs
rename to src/Ganeti/JQueue.hs
diff --git a/htools/Ganeti/JSON.hs b/src/Ganeti/JSON.hs
similarity index 100%
rename from htools/Ganeti/JSON.hs
rename to src/Ganeti/JSON.hs
diff --git a/htools/Ganeti/Jobs.hs b/src/Ganeti/Jobs.hs
similarity index 100%
rename from htools/Ganeti/Jobs.hs
rename to src/Ganeti/Jobs.hs
diff --git a/htools/Ganeti/Logging.hs b/src/Ganeti/Logging.hs
similarity index 100%
rename from htools/Ganeti/Logging.hs
rename to src/Ganeti/Logging.hs
diff --git a/htools/Ganeti/Luxi.hs b/src/Ganeti/Luxi.hs
similarity index 100%
rename from htools/Ganeti/Luxi.hs
rename to src/Ganeti/Luxi.hs
diff --git a/htools/Ganeti/Network.hs b/src/Ganeti/Network.hs
similarity index 100%
rename from htools/Ganeti/Network.hs
rename to src/Ganeti/Network.hs
diff --git a/htools/Ganeti/Objects.hs b/src/Ganeti/Objects.hs
similarity index 100%
rename from htools/Ganeti/Objects.hs
rename to src/Ganeti/Objects.hs
diff --git a/htools/Ganeti/OpCodes.hs b/src/Ganeti/OpCodes.hs
similarity index 100%
rename from htools/Ganeti/OpCodes.hs
rename to src/Ganeti/OpCodes.hs
diff --git a/htools/Ganeti/OpParams.hs b/src/Ganeti/OpParams.hs
similarity index 100%
rename from htools/Ganeti/OpParams.hs
rename to src/Ganeti/OpParams.hs
diff --git a/htools/Ganeti/Path.hs b/src/Ganeti/Path.hs
similarity index 100%
rename from htools/Ganeti/Path.hs
rename to src/Ganeti/Path.hs
diff --git a/htools/Ganeti/Query/Common.hs b/src/Ganeti/Query/Common.hs
similarity index 100%
rename from htools/Ganeti/Query/Common.hs
rename to src/Ganeti/Query/Common.hs
diff --git a/htools/Ganeti/Query/Filter.hs b/src/Ganeti/Query/Filter.hs
similarity index 100%
rename from htools/Ganeti/Query/Filter.hs
rename to src/Ganeti/Query/Filter.hs
diff --git a/htools/Ganeti/Query/Group.hs b/src/Ganeti/Query/Group.hs
similarity index 100%
rename from htools/Ganeti/Query/Group.hs
rename to src/Ganeti/Query/Group.hs
diff --git a/htools/Ganeti/Query/Job.hs b/src/Ganeti/Query/Job.hs
similarity index 100%
rename from htools/Ganeti/Query/Job.hs
rename to src/Ganeti/Query/Job.hs
diff --git a/htools/Ganeti/Query/Language.hs b/src/Ganeti/Query/Language.hs
similarity index 100%
rename from htools/Ganeti/Query/Language.hs
rename to src/Ganeti/Query/Language.hs
diff --git a/htools/Ganeti/Query/Node.hs b/src/Ganeti/Query/Node.hs
similarity index 100%
rename from htools/Ganeti/Query/Node.hs
rename to src/Ganeti/Query/Node.hs
diff --git a/htools/Ganeti/Query/Query.hs b/src/Ganeti/Query/Query.hs
similarity index 100%
rename from htools/Ganeti/Query/Query.hs
rename to src/Ganeti/Query/Query.hs
diff --git a/htools/Ganeti/Query/Server.hs b/src/Ganeti/Query/Server.hs
similarity index 100%
rename from htools/Ganeti/Query/Server.hs
rename to src/Ganeti/Query/Server.hs
diff --git a/htools/Ganeti/Query/Types.hs b/src/Ganeti/Query/Types.hs
similarity index 100%
rename from htools/Ganeti/Query/Types.hs
rename to src/Ganeti/Query/Types.hs
diff --git a/htools/Ganeti/Rpc.hs b/src/Ganeti/Rpc.hs
similarity index 100%
rename from htools/Ganeti/Rpc.hs
rename to src/Ganeti/Rpc.hs
diff --git a/htools/Ganeti/Runtime.hs b/src/Ganeti/Runtime.hs
similarity index 100%
rename from htools/Ganeti/Runtime.hs
rename to src/Ganeti/Runtime.hs
diff --git a/htools/Ganeti/Ssconf.hs b/src/Ganeti/Ssconf.hs
similarity index 100%
rename from htools/Ganeti/Ssconf.hs
rename to src/Ganeti/Ssconf.hs
diff --git a/htools/Ganeti/THH.hs b/src/Ganeti/THH.hs
similarity index 100%
rename from htools/Ganeti/THH.hs
rename to src/Ganeti/THH.hs
diff --git a/htools/Ganeti/Types.hs b/src/Ganeti/Types.hs
similarity index 100%
rename from htools/Ganeti/Types.hs
rename to src/Ganeti/Types.hs
diff --git a/htools/Ganeti/Utils.hs b/src/Ganeti/Utils.hs
similarity index 100%
rename from htools/Ganeti/Utils.hs
rename to src/Ganeti/Utils.hs
diff --git a/htools/Ganeti/Version.hs.in b/src/Ganeti/Version.hs.in
similarity index 100%
rename from htools/Ganeti/Version.hs.in
rename to src/Ganeti/Version.hs.in
diff --git a/htools/OLD-NEWS b/src/OLD-NEWS
similarity index 100%
rename from htools/OLD-NEWS
rename to src/OLD-NEWS
diff --git a/htools/README b/src/README
similarity index 100%
rename from htools/README
rename to src/README
diff --git a/htools/haddock-prologue b/src/haddock-prologue
similarity index 100%
rename from htools/haddock-prologue
rename to src/haddock-prologue
diff --git a/htools/hconfd.hs b/src/hconfd.hs
similarity index 100%
rename from htools/hconfd.hs
rename to src/hconfd.hs
diff --git a/htools/htools.hs b/src/htools.hs
similarity index 100%
rename from htools/htools.hs
rename to src/htools.hs
diff --git a/htools/lint-hints.hs b/src/lint-hints.hs
similarity index 100%
rename from htools/lint-hints.hs
rename to src/lint-hints.hs
diff --git a/htools/mon-collector.hs b/src/mon-collector.hs
similarity index 100%
rename from htools/mon-collector.hs
rename to src/mon-collector.hs
diff --git a/htools/rpc-test.hs b/src/rpc-test.hs
similarity index 100%
rename from htools/rpc-test.hs
rename to src/rpc-test.hs