Use prototype and attributes macros