caching and whitespace