dynamic callback list, never full