use cached property for matrix