 {
   T one = make_one<T>();
   cublasStatus_t status;
-  cudaEvent_t eAin, eBin, eComp;
+  cudaEvent_t eAin, eComp;
   check_error( cudaEventCreateWithFlags(&eAin, cudaEventDisableTiming), CUBLAS_STATUS_EXECUTION_FAILED);
   check_error( cudaEventCreateWithFlags(&eComp, cudaEventDisableTiming), CUBLAS_STATUS_EXECUTION_FAILED);
   cudaStream_t strComp;

                         m, n,
                         alpha,
                         Ac, incA, Ad,
                         Bc, incB, Bd, false, true)
    ), status);
  //sync streams 
  check_error( cudaStreamSynchronize( outStream ), CUBLAS_STATUS_INTERNAL_ERROR);
  
  //revoke streams
  check_error( cudaStreamDestroy( inStream ), CUBLAS_STATUS_INTERNAL_ERROR);
  check_error( cudaStreamDestroy( outStream ), CUBLAS_STATUS_INTERNAL_ERROR);
  //free device memory
  check_error( cudaFree( Ad ), CUBLAS_STATUS_INTERNAL_ERROR );
  check_error( cudaFree( Bd ), CUBLAS_STATUS_INTERNAL_ERROR );  

    if(Bout){
      check_error( cudaEventRecord(eComp, strComp), CUBLAS_STATUS_INTERNAL_ERROR);
      check_error( cudaStreamWaitEvent(strOut, eComp, 0), CUBLAS_STATUS_INTERNAL_ERROR);
      check_error( status = cublasGetMatrixAsync( m, n, sizeof(T), Bd, incB, Bc, incB, strOut), status);
    }
  }else
  if(side == CUBLAS_SIDE_LEFT){
