First full functionnal implementation