# Renaming

Renaming transforms are constructed with a renamer function that returns a string. The transform executes the renamer on each schema element within its scope and applies the revised names to gateway schema elements. If a renamer returns `undefined`, the name will be left unchanged. Additional options may control whether built-in types and scalars are renamed, see linked API docs.

- [`RenameTypes`](/content/graphql/tools/docs/api/classes/wrap_src.renametypes): renames all element types.
- [`RenameRootTypes`](/content/graphql/tools/docs/api/classes/wrap_src.renameroottypes): renames the root Query, Mutation, and Subscription types.
- [`RenameRootFields`](/content/graphql/tools/docs/api/classes/wrap_src.renamerootfields): renames fields on the root Query, Mutation, and Subscription objects.
- [`RenameObjectFields`](/content/graphql/tools/docs/api/classes/wrap_src.renameobjectfields): renames fields of Object types.
- [`RenameObjectFieldArguments`](/content/graphql/tools/docs/api/classes/wrap_src.renameobjectfieldarguments): renames field arguments of Object types.
- [`RenameInterfaceFields`](/content/graphql/tools/docs/api/classes/wrap_src.renameinterfacefields): renames fields of Interface types.
- [`RenameInputObjectFields`](/content/graphql/tools/docs/api/classes/wrap_src.renameinputobjectfields): renames input fields of InputObject types.

```
import { stitchSchemas } from '@graphql-tools/stitch'
import {
  RenameInputObjectFields,
  RenameInterfaceFields,
  RenameObjectFieldArguments,
  RenameObjectFields,
  RenameRootFields,
  RenameRootTypes,
  RenameTypes,
  wrapSchema
} from '@graphql-tools/wrap'

const subschema = {
  schema: originalSchema,
  transforms: [
    new RenameTypes(name => `New${name}`),
    new RenameRootTypes(name => `New${name}`),
    new RenameRootFields((operationName, fieldName, fieldConfig) => `new_${fieldName}`),
    new RenameObjectFields((typeName, fieldName, fieldConfig) => `new_${fieldName}`),
    new RenameObjectFieldArguments((typeName, fieldName, argName) => `new_${argName}`),
    new RenameInterfaceFields((typeName, fieldName, fieldConfig) => `new_${fieldName}`),
    new RenameInputObjectFields((typeName, fieldName, inputFieldConfig) => `new_${fieldName}`)
  ]
}

const gateway = stitchSchemas({
  subschemas: [schema]
})
``
