wouldn't callbacks be better?