diff --git a/src/main/java/ch/hepia/numeric/Matrix.java b/src/main/java/ch/hepia/numeric/Matrix.java
new file mode 100644
index 0000000000000000000000000000000000000000..4902e3bcebd4bf774aa27a29dde68649ddf4cc18
--- /dev/null
+++ b/src/main/java/ch/hepia/numeric/Matrix.java
@@ -0,0 +1,151 @@
+package ch.hepia.numeric;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.function.BiFunction;
+import java.util.function.DoubleFunction;
+
+public class Matrix {
+
+    public int nbRows() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public int nbCols() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public List<Vector> cols() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public List<Transposed> rows() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Transposed getRow(int i) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Vector getCol(int i) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public double get(int i, int j) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    void set(int row, int col, double value) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix map(DoubleFunction<Double> f) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix add(Matrix that) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix mul(double d) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix mul(Matrix that) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix sub(Matrix that) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public boolean isSquare() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix t() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix rowRemoved(int i){
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix colRemoved(int i){
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public Matrix removed(int i, int j) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+
+    public Matrix adjugate() {
+        Matrix res = Matrix.tabulate(nbRows(), nbCols(), (i, j) -> {
+            if ((i + j) % 2 == 0) {
+                return removed(i, j).det();
+            } else {
+                return -removed(i, j).det();
+            }
+        });
+        return res;
+    }
+
+    public Matrix inv() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+
+    public double det() {
+        if (!isSquare()) {
+            /* do something smart */
+        }
+
+        if( nbCols() == 1) {
+            return get(0,0);
+        } else if( nbCols() == 2 ){
+            return get(0,0)*get(1,1) - get(1,0)*get(0,1);
+        } else {
+            /* A vous de jouer */
+
+
+
+            throw new UnsupportedOperationException("This feature isn't implemented yet");
+        }
+    }
+
+    public Matrix copy() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+
+    @Override
+    public String toString() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+
+    public static Matrix of(List<Transposed> ts) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Matrix of(Transposed... ts) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Matrix empty() {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Matrix fill(int rows, int cols, double value) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Matrix zeros(int rows, int cols) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Matrix ones(int rows, int cols) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet"); 
+    }
+    public static Matrix tabulate(int rows, int cols, BiFunction<Integer, Integer, Double> f) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Matrix diag(double... ds) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Matrix identity(int nb) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+    public static Vector solve(Matrix m, Vector b) {
+        throw new UnsupportedOperationException("This feature isn't implemented yet");
+    }
+}
+
+
+
+
+
+
+
+
+
+