cacheable matrix solver ;)