added an optional message parameter to contract macros