Cache remote schemas

Hmm, should rootSchema be a pointer? It would avoid this side of the if statement.