implemented when-not macro