diff --git a/qlinear.cabal b/qlinear.cabal
--- a/qlinear.cabal
+++ b/qlinear.cabal
@@ -1,6 +1,6 @@
 cabal-version:  3.0
 name:           qlinear
-version:        0.1.0.1
+version:        0.1.2.0
 synopsis:       Typesafe library for linear algebra
 description:    Please see the README on GitHub at <https://github.com/JuniorGarbageCollector/QLinear>
 category:       Math
diff --git a/src/QLinear/Operations.hs b/src/QLinear/Operations.hs
--- a/src/QLinear/Operations.hs
+++ b/src/QLinear/Operations.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE RankNTypes #-}
-
+{-# LANGUAGE ScopedTypeVariables #-}
 module QLinear.Operations
   ( length,
     mulMatricesWith,
@@ -35,6 +35,8 @@
 (~+~) :: Num a => Matrix m n a -> Matrix m n a -> Matrix m n a
 (~+~) = zipMatricesWith (+)
 
+infixl 6 ~+~
+
 -- | Multuplies all elements of matrix __m__ by __k__
 --
 -- >>> 5 *~ [matrix| 1 2 3; 4 5 6 |]
@@ -49,6 +51,8 @@
   Matrix m n a
 (*~) n = fmap (n *)
 
+infixl 7 *~
+
 -- | Adds __a__ to all elements of matrix __m__
 --
 -- >>> [matrix| 1 2 3 |] ~+ 8
@@ -60,10 +64,14 @@
   Matrix m n a
 (~+) m n = (+ n) <$> m
 
+infixl 6 ~+
+
 -- | Flipped __~+__ :)
 (+~) :: Num a => a -> Matrix m n a -> Matrix m n a
 (+~) = flip (~+)
 
+infixl 6 +~
+
 -- | Substracts second matrix from first one
 --
 -- >>> [matrix| 1 2 3 |] ~-~ [matrix| 3 2 1 |]
@@ -71,6 +79,9 @@
 (~-~) :: Num a => Matrix m n a -> Matrix m n a -> Matrix m n a
 (~-~) = zipMatricesWith (-)
 
+infixl 6 ~-~
+
+
 -- | Multiplies two matrix
 --
 -- >>> [matrix| 1 2; 3 4 |] ~*~ [matrix| 1; 2 |]
@@ -79,6 +90,8 @@
 (~*~) :: Num a => Matrix m n a -> Matrix n k a -> Matrix m k a
 (~*~) = mulMatricesWith (*) (+)
 
+infixl 7 ~*~
+
 -- | Generalized matrices multiplication
 mulMatricesWith ::
   -- | operation "__*__"
@@ -124,10 +137,10 @@
 -- 5.0
 -- >>> length [vector| 1 1 |]
 -- 1.4142135623730951
-length :: (Real a, Floating b) => Vector n a -> b
+length :: forall a b n. (Real a, Floating b) => Vector n a -> b
 length (Matrix _ matrix) = sqrt $ sum $ squares
   where
-    toFloating = realToFrac :: (Real a, Floating b) => a -> b
+    toFloating = realToFrac :: a -> b
     squares = map ((** 2) . toFloating) $ concat matrix
 
 -- | Inverted matrix
@@ -140,10 +153,10 @@
 inverted :: forall a b n. (Fractional b, Eq a, Real a) => Matrix n n a -> Maybe (Matrix n n b)
 inverted (Matrix size@(1, 1) [[a]]) = if a /= 0 then Just (Matrix size [[1.0 / toFloating a]]) else Nothing
   where
-    toFloating = realToFrac :: (Real a, Fractional b) => a -> b
+    toFloating = realToFrac :: a -> b
 inverted matrix = if determinant /= 0 then Just $ ((invertedDet *) . toFloating) <$> adj else Nothing
   where
-    toFloating = realToFrac :: (Real a, Fractional b) => a -> b
+    toFloating = realToFrac :: a -> b
     determinant = det matrix
     invertedDet = 1.0 / toFloating determinant
     adj = adjugate matrix
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -65,60 +65,60 @@
     it "two matrices" do
       {- will not be compiled -}
       -- [matrix| 1 2 |] ~+~ [matrix| 1 2 3 |] `matrixEq` undefined
-      [matrix| 1 2 |] ~+~ [matrix| 3 4 |] `matrixEq` [matrix| 4 6 |]
-      [matrix| 1 2; 3 4 |] ~+~ [matrix| 3 4; 5 6 |] `matrixEq` [matrix| 4 6; 8 10 |]
+      ([matrix| 1 2 |] ~+~ [matrix| 3 4 |]) `matrixEq` [matrix| 4 6 |]
+      ([matrix| 1 2; 3 4 |] ~+~ [matrix| 3 4; 5 6 |]) `matrixEq` [matrix| 4 6; 8 10 |]
     it "matrix and identity matrix" do
       {- will not be compiled -}
       -- [matrix| 1 2 |] ~+~ e `matrixEq` undefined
-      [matrix| 1 2; 3 4 |] ~+~ e `matrixEq` [matrix| 2 2; 3 5 |]
-      e ~+~ [matrix| 1 2; 3 4 |] `matrixEq` [matrix| 2 2; 3 5 |]
+      ([matrix| 1 2; 3 4 |] ~+~ e) `matrixEq` [matrix| 2 2; 3 5 |]
+      (e ~+~ [matrix| 1 2; 3 4 |]) `matrixEq` [matrix| 2 2; 3 5 |]
     it "two identity matrices" do
       {- will not be compiled -}
       -- (e :: Matrix 3 3 Int) ~+~ (e :: Matrix 4 4 Int) `matrixEq` undefined
-      (e :: Matrix 3 3 Int) ~+~ e `matrixEq` [matrix| 2 0 0; 0 2 0; 0 0 2 |]
+      ((e :: Matrix 3 3 Int) ~+~ e) `matrixEq` [matrix| 2 0 0; 0 2 0; 0 0 2 |]
     it "two vectors" do
       {- will not be compiled -}
       -- [vector| 1 2 |] ~+~ [vector| 1 2 3 |] `matrixEq` undefined
-      [vector| 1 2 |] ~+~ [vector| 3 4 |] `matrixEq` [vector| 4 6 |]
+      ([vector| 1 2 |] ~+~ [vector| 3 4 |]) `matrixEq` [vector| 4 6 |]
 
   describe "Substaction" do
     it "two matrices" do
       {- will not be compiled -}
       -- [matrix| 1 2 |] ~-~ [matrix| 1 2 3 |] `matrixEq` undefined
-      [matrix| 1 2 |] ~-~ [matrix| 3 4 |] `matrixEq` [matrix| -2 -2 |]
-      [matrix| 1 2; 3 4 |] ~-~ [matrix| 3 4; 5 6 |] `matrixEq` [matrix| -2 -2; -2 -2 |]
+      ([matrix| 1 2 |] ~-~ [matrix| 3 4 |]) `matrixEq` [matrix| -2 -2 |]
+      ([matrix| 1 2; 3 4 |] ~-~ [matrix| 3 4; 5 6 |]) `matrixEq` [matrix| -2 -2; -2 -2 |]
     it "matrix and identity matrix" do
       {- will not be compiled -}
       -- [matrix| 1 2 |] ~-~ e `matrixEq` undefined
-      [matrix| 1 2; 3 4 |] ~-~ e `matrixEq` [matrix| 0 2; 3 3 |]
-      e ~-~ [matrix| 1 2; 3 4 |] `matrixEq` [matrix| 0 -2; -3 -3 |]
+      ([matrix| 1 2; 3 4 |] ~-~ e) `matrixEq` [matrix| 0 2; 3 3 |]
+      (e ~-~ [matrix| 1 2; 3 4 |]) `matrixEq` [matrix| 0 -2; -3 -3 |]
     it "two identity matrices" do
       {- will not be compiled -}
       -- (e :: Matrix 3 3 Int) ~-~ (e :: Matrix 4 4 Int) `matrixEq` undefined
-      (e :: Matrix 3 3 Int) ~-~ e `matrixEq` [matrix| 0 0 0; 0 0 0; 0 0 0 |]
+      ((e :: Matrix 3 3 Int) ~-~ e) `matrixEq` [matrix| 0 0 0; 0 0 0; 0 0 0 |]
     it "two vectors" do
       {- will not be compiled -}
       -- [vector| 1 2 |] ~-~ [vector| 1 2 3 |] `matrixEq` undefined
-      [vector| 1 2 |] ~-~ [vector| 3 4 |] `matrixEq` [vector| -2 -2 |]
+      ([vector| 1 2 |] ~-~ [vector| 3 4 |]) `matrixEq` [vector| -2 -2 |]
 
   describe "Multiplication" do
     it "two matrices" do
       {- will not be compiled -}
       -- [matrix| 1 2 |] ~*~ [matrix| 1 2 |] `matrixEq` undefined
-      [matrix| 2 |] ~*~ [matrix| 3 |] `matrixEq` [matrix| 6 |]
-      [matrix| 1 2 |] ~*~ [matrix| 1; 2 |] `matrixEq` [matrix| 5 |]
-      [matrix| 1 2 |] ~*~ [matrix| 1 2; 3 4 |] `matrixEq` [matrix| 7 10 |]
-      [matrix| 1 2; 3 4 |] ~*~ [matrix| 2 3; 4 5 |] `matrixEq` [matrix| 10 13; 22 29 |]
+      ([matrix| 2 |] ~*~ [matrix| 3 |]) `matrixEq` [matrix| 6 |]
+      ([matrix| 1 2 |] ~*~ [matrix| 1; 2 |]) `matrixEq` [matrix| 5 |]
+      ([matrix| 1 2 |] ~*~ [matrix| 1 2; 3 4 |]) `matrixEq` [matrix| 7 10 |]
+      ([matrix| 1 2; 3 4 |] ~*~ [matrix| 2 3; 4 5 |]) `matrixEq` [matrix| 10 13; 22 29 |]
     it "matrix and identity matrix" do
       {- will not be compiled -}
       -- [matrix| 1 2 |] ~*~ (e :: Matrix 3 3 Int) `matrixEq` undefined
-      [matrix| 1 2 |] ~*~ e `matrixEq` [matrix| 1 2 |]
-      [matrix| 1 2; 3 4 |] ~*~ e `matrixEq` [matrix| 1 2; 3 4 |]
-      e ~*~ [matrix| 1 2; 3 4 |] `matrixEq` [matrix| 1 2; 3 4 |]
+      ([matrix| 1 2 |] ~*~ e) `matrixEq` [matrix| 1 2 |]
+      ([matrix| 1 2; 3 4 |] ~*~ e) `matrixEq` [matrix| 1 2; 3 4 |]
+      (e ~*~ [matrix| 1 2; 3 4 |]) `matrixEq` [matrix| 1 2; 3 4 |]
     it "two identity matrices" do
       {- will not be compiled -}
       -- (e :: Matrix 3 3 Int) ~*~ (e :: Matrix 4 4 Int) `matrixEq` undefined
-      (e :: Matrix 3 3 Int) ~*~ e `matrixEq` e
+      ((e :: Matrix 3 3 Int) ~*~ e) `matrixEq` e
 
   describe "Determinant" do
     it "not identity matrix" do
@@ -179,8 +179,8 @@
       res
     it "A^(-1) * A = E" do
       let Just inv = inverted a
-      a ~*~ invA `matrixEqDouble` e
-      invA ~*~ a `matrixEqDouble` e
+      (a ~*~ invA) `matrixEqDouble` e
+      (invA ~*~ a) `matrixEqDouble` e
     it "(AB)^(-1) = B^(-1)A^(-1)" do
       let Just invAB = inverted $ a ~*~ b
       invAB `matrixEqDouble` (invB ~*~ invA)
