call cb only once