This is internal, it doesn't need Javadoc