Polymorphic substitution
Must test all possible combinations