no more fudge factors
optional callback, return
cleanup