use marco require-extentions instead of function to require extentions