Merged canonical callbacks with backward compatibility