__typeof__(()) instead of typeof() to be compatible with ISO C, add strong references to weak callbacks