SBT-ized; uses Scalaz's rose tree instead of rolling our own.