TDT now breaks blocks. Most of this code was copied, so it still needs a lot of tidying up. But it works!