tdhcp by (c) Konrad Rosenbaum, 2009