Slightly simpler callback handling (fewer pointers)