why not do this with substitute instead?