Add many checkings and macros