add substitute macro