moving override so it works well with caching inner product information