Make sure callback in only called once. Simplify callback this semantics