add done() func & spec