Add instantiation logic for non-terminal variants, resolves #686