added outer product