diff --git a/.gitignore b/.gitignore
index 85843c056cf9afd9f021283affcd3454ae673732..dc60438e75aa1a51ea996c4acd0c5d71ba4d95e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,7 +46,7 @@ src/box/bootstrap.h
 src/lua/*.lua.c
 src/box/lua/*.lua.c
 src/tarantool
-src/module.h
+src/module/tarantool.h
 tarantool-*.tar.gz
 test/lib/*.pyc
 test/lib/*/*.pyc
diff --git a/cmake/utils.cmake b/cmake/utils.cmake
index 2402e4bd6456f1be502dd0332f0cee22d08527d7..ed1c9e0236ad7705eae330faf50d8e83ac430587 100644
--- a/cmake/utils.cmake
+++ b/cmake/utils.cmake
@@ -82,7 +82,7 @@ endfunction()
 
 # A helper function to extract public API
 function(apigen)
-    set (dstfile "${CMAKE_BINARY_DIR}/src/module.h")
+    set (dstfile "${CMAKE_CURRENT_BINARY_DIR}/tarantool.h")
     set (tmpfile "${dstfile}.new")
     set (headers)
     # Get absolute path for header files (required of out-of-source build)
@@ -91,14 +91,14 @@ function(apigen)
     endforeach()
 
     add_custom_command(OUTPUT ${dstfile}
-        COMMAND cat ${CMAKE_SOURCE_DIR}/src/module_header.h > ${tmpfile}
+        COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/tarantool_header.h > ${tmpfile}
         COMMAND cat ${headers} | ${CMAKE_SOURCE_DIR}/extra/apigen >> ${tmpfile}
-        COMMAND cat ${CMAKE_SOURCE_DIR}/src/module_footer.h >> ${tmpfile}
+        COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/tarantool_footer.h >> ${tmpfile}
         COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmpfile} ${dstfile}
         COMMAND ${CMAKE_COMMAND} -E remove ${tmpfile}
         DEPENDS ${srcfiles}
-                ${CMAKE_SOURCE_DIR}/src/module_header.h
-                ${CMAKE_SOURCE_DIR}/src/module_footer.h
+                ${CMAKE_CURRENT_SOURCE_DIR}/tarantool_header.h
+                ${CMAKE_CURRENT_SOURCE_DIR}/tarantool_footer.h
         )
 
     add_custom_target(generate_module_api ALL DEPENDS ${dstfile})
diff --git a/extra/rpm/tarantool.rpm.spec.in b/extra/rpm/tarantool.rpm.spec.in
index 19794386ae27ba4d521cbf5246335350d5e5d21c..9c39581ec32470da9b6af656c79509745335f339 100644
--- a/extra/rpm/tarantool.rpm.spec.in
+++ b/extra/rpm/tarantool.rpm.spec.in
@@ -300,7 +300,7 @@ chkconfig --del tarantool
 "%{_includedir}/tarantool/lua.hpp"
 "%{_includedir}/tarantool/luajit.h"
 "%{_includedir}/tarantool/lualib.h"
-"%{_includedir}/tarantool/module.h"
+"%{_includedir}/tarantool/tarantool.h"
 
 %files common
 %defattr(-,root,root,-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8b526bba7b9c1469f9104c98516c40a27eca9e21..c3309911351fc4f58776bf6c90686197bb769ac9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -143,13 +143,9 @@ endif()
 set (common_libraries ${common_libraries} ${LIBUUID_LIBRARIES})
 set (common_libraries ${common_libraries} PARENT_SCOPE)
 
-set(api_headers say.h coeio.h lua/utils.h)
-
 add_subdirectory(lib)
 add_subdirectory(box)
 
-apigen(${api_headers})
-
 # Save CMAKE_XXX_FLAGS from this directory for config.h (used in --version)
 set(TARANTOOL_C_FLAGS ${CMAKE_C_FLAGS} PARENT_SCOPE)
 set(TARANTOOL_CXX_FLAGS ${CMAKE_CXX_FLAGS} PARENT_SCOPE)
diff --git a/src/module/CMakeLists.txt b/src/module/CMakeLists.txt
index 293ce2e04fa816d455812e08148e913534e69aa9..88ec9e3374968f788c34a5d060ab41821d2a675d 100644
--- a/src/module/CMakeLists.txt
+++ b/src/module/CMakeLists.txt
@@ -1,3 +1,6 @@
+set(api_headers ../say.h ../coeio.h ../lua/utils.h)
+apigen(${api_headers})
+
 add_subdirectory(sql)
 add_subdirectory(pg)
 add_subdirectory(mysql)
diff --git a/src/module/mysql/mysql.cc b/src/module/mysql/mysql.cc
index 2aa484562527b3bea581d4a981383238b2960825..6920ac8a02977760bfd8f9f1d93bd66762631b45 100644
--- a/src/module/mysql/mysql.cc
+++ b/src/module/mysql/mysql.cc
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 
-#include "module.h"
+#include "module/tarantool.h"
 
 #include <stddef.h>
 
diff --git a/src/module/pg/pg.cc b/src/module/pg/pg.cc
index a0c6a3ba695ae1900249d8c2b593fee1f7043b84..937a5f26bf86f3d591ea4c384dd9e5431726eb84 100644
--- a/src/module/pg/pg.cc
+++ b/src/module/pg/pg.cc
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 
-#include "module.h"
+#include "module/tarantool.h"
 
 extern "C" {
 	#include <libpq-fe.h>
diff --git a/src/module_footer.h b/src/module/tarantool_footer.h
similarity index 100%
rename from src/module_footer.h
rename to src/module/tarantool_footer.h
diff --git a/src/module_header.h b/src/module/tarantool_header.h
similarity index 100%
rename from src/module_header.h
rename to src/module/tarantool_header.h
diff --git a/test/app/module_api.c b/test/app/module_api.c
index 36d52807fcc5aae43d2eccef739ca9a23fc7036e..42c0164089e51ba4d249a6a701022400850a521a 100644
--- a/test/app/module_api.c
+++ b/test/app/module_api.c
@@ -1,4 +1,4 @@
-#include "module.h"
+#include "module/tarantool.h"
 
 #include <errno.h>
 #include <sys/types.h>