substitution: work on base cases