reimplemented caching in prod_orthogonal...