diff --git a/bindings/fortran/adios2_mod.f90 b/bindings/fortran/adios2_mod.f90
new file mode 100644
index 0000000000000000000000000000000000000000..b4e7d502eee390de466d3001f23229acb22dac96
--- /dev/null
+++ b/bindings/fortran/adios2_mod.f90
@@ -0,0 +1,54 @@
+module adios2
+
+    #include "adios2_parameters.f90"
+
+    ! Overload adios2_init functions
+    interface adios2_init
+        #ifdef ADIOS2_USE_MPI_Fortran
+        module procedure adios2_init_mpi
+        module procedure adios2_init_config_mpi
+        #else
+        module procedure adios2_init_nompi
+        module procedure adios2_init_config_nompi
+        #endif
+    end interface
+
+        #ifdef ADIOS2_USE_MPI_Fortran
+    subroutine adios2_init_mpi(adios, comm, debug_mode, ierr)
+        implicit none
+        integer, intent(out) :: adios
+        integer, intent(in) :: comm
+        logical, intent(in), optional :: debug_mode
+        integer, intent(out), optional :: ierr
+    end
+
+    subroutine adios2_init_config_mpi(adios, config_file, comm, debug_mode &
+        & ierr)
+        implicit none
+        integer, intent(out) :: adios
+        character(*), intent(in) :: config_file
+        integer, intent(in) :: comm
+        logical, intent(in), optional :: debug_mode
+        integer, intent(out), optional :: ierr
+    end
+
+        #else
+    subroutine adios2_init_config_nompi(adios, config_file, debug_mode, &
+        & ierr)
+        implicit none
+        integer, intent(out) :: adios
+        character(*), intent(in) :: config_file
+        logical, intent(in), optional :: debug_mode
+        integer, intent(out), optional :: ierr
+    end
+
+    subroutine adios2_init_nompi(adios, debug_mode, ierr)
+        implicit none
+        integer, intent(out) :: adios
+        logical, intent(in), optional :: debug_mode
+        integer, intent(out), optional :: ierr
+    end
+
+
+end module
+
diff --git a/bindings/fortran/adios2_parameters.f90 b/bindings/fortran/adios2_parameters.f90
new file mode 100644
index 0000000000000000000000000000000000000000..3941c0fccd1d46855dd232db1851550ba63a770f
--- /dev/null
+++ b/bindings/fortran/adios2_parameters.f90
@@ -0,0 +1,25 @@
+
+! Debug mode
+integer, parameter :: adios2_debug_mode_on = 0
+integer, parameter :: adios2_debug_mode_off = 1
+
+! Type
+integer, parameter :: adios2_type_character = 0
+integer, parameter :: adios2_type_integer = 1
+integer, parameter :: adios2_type_real = 2
+integer, parameter :: adios2_type_real8 = 3
+integer, parameter :: adios2_type_double_precision = 3
+integer, parameter :: adios2_type_complex = 4
+integer, parameter :: adios2_type_complex8 = 5
+
+integer, parameter :: adios2_type_integer1 = 6
+integer, parameter :: adios2_type_integer2 = 7
+integer, parameter :: adios2_type_integer4 = 8
+integer, parameter :: adios2_type_integer8 = 9
+
+! Open Mode
+integer, parameter :: adios2_open_mode_undefined = 0
+integer, parameter :: adios2_open_mode_write = 1
+integer, parameter :: adios2_open_mode_read = 2
+integer, parameter :: adios2_open_mode_append = 3
+integer, parameter :: adios2_open_mode_read_write = 4