diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0010fee0f0d0f9e2777c46e4ff34e2e1e4cb589c..b69b8aa9438d381d504664db0804967513a4ef12 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -117,4 +117,14 @@ if(CM_ALL_AUTO_DOC)
     add_subdirectory("docs")
 endif(CM_ALL_AUTO_DOC)
 
+# ProjectConfig
+
+install(EXPORT ALLTargets
+    NAMESPACE ALL::
+    FILE ALLTargets.cmake
+    DESTINATION lib/cmake/ALL
+    )
+
+#export(PACKAGE ALL)
+
 # vim: sw=4 ts=4 et
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 283e2ceda34219ea46a2329e62030ce9215a6b0a..f0812449539e2f195e1ecbd345ff8e2ffd5774df 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,15 +1,18 @@
 set(ALL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
-set(ALL_HEADER_FILES ${ALL_INCLUDE_DIR}/ALL.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_LB.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_Functions.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_Histogram.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_Staggered.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_Tensor.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_ForceBased.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_Voronoi.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_Point.hpp
-                     ${ALL_INCLUDE_DIR}/ALL_CustomExceptions.hpp)
+set(ALL_HEADER_FILES
+    ${ALL_INCLUDE_DIR}/ALL.hpp
+    ${ALL_INCLUDE_DIR}/ALL_LB.hpp
+    ${ALL_INCLUDE_DIR}/ALL_Functions.hpp
+    ${ALL_INCLUDE_DIR}/ALL_Histogram.hpp
+    ${ALL_INCLUDE_DIR}/ALL_Staggered.hpp
+    ${ALL_INCLUDE_DIR}/ALL_Tensor.hpp
+    ${ALL_INCLUDE_DIR}/ALL_ForceBased.hpp
+    ${ALL_INCLUDE_DIR}/ALL_Voronoi.hpp
+    ${ALL_INCLUDE_DIR}/ALL_Point.hpp
+    ${ALL_INCLUDE_DIR}/ALL_CustomExceptions.hpp)
 
+# todo(s.schulz): Should these be installed explicitly?
+# install(FILES ${ALL_HEADER_FILES} DESTINATION include)
 
 add_library (ALL ALL.cpp ALL_fortran.cpp ${ALL_HEADER_FILES})
 
@@ -23,17 +26,21 @@ if(CM_ALL_VORONOI)
 endif(CM_ALL_VORONOI)
 
 target_include_directories(ALL PUBLIC ${MPI_CXX_INCLUDE_PATH})
-target_include_directories (ALL PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${ALL_INCLUDE_DIR})
+target_include_directories (ALL
+    PUBLIC
+    "$<BUILD_INTERFACE:${ALL_INCLUDE_DIR}>"
+    "$<INSTALL_INTERFACE:include>")
 target_link_libraries(ALL PUBLIC ${MPI_CXX_LINK_FLAGS} ${MPI_CXX_LIBRARIES})
 
-install(TARGETS ALL 
-        RUNTIME DESTINATION bin
-        LIBRARY DESTINATION lib
-        ARCHIVE DESTINATION lib
-        INCLUDES DESTINATION include)
+install(TARGETS ALL
+    EXPORT ALLTargets
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib
+    INCLUDES DESTINATION include)
 
 install(FILES ${ALL_HEADER_FILES}
-        DESTINATION include)
+    DESTINATION include)
 
 if (CM_ALL_FORTRAN)
     set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/modules)
@@ -41,8 +48,8 @@ if (CM_ALL_FORTRAN)
     set_property(TARGET ALL_fortran PROPERTY LINKER_LANGUAGE Fortran)
 
     if(CM_ALL_VTK_OUTPUT)
-        target_include_directories(ALL_fortran PUBLIC ${VTK_INCLUDE_DIRS})
-        target_link_libraries(ALL_fortran PUBLIC ${VTK_LIBRARIES})
+        target_include_directories(ALL_fortran PRIVATE ${VTK_INCLUDE_DIRS})
+        target_link_libraries(ALL_fortran PRIVATE ${VTK_LIBRARIES})
     endif(CM_ALL_VTK_OUTPUT)
     #if(CM_ALL_VORONOI)
     #    target_include_directories(ALL_fortran PUBLIC ${CM_ALL_VORO_INC})
@@ -50,10 +57,15 @@ if (CM_ALL_FORTRAN)
     #endif(CM_ALL_VORONOI)
 
     target_include_directories(ALL_fortran PUBLIC ${MPI_Fortran_INCLUDE_PATH})
-    target_include_directories(ALL_fortran PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${ALL_INCLUDE_DIR})
+    target_include_directories(ALL_fortran
+        PUBLIC
+        "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
+        "$<INSTALL_INTERFACE:src>")
+    target_include_directories(ALL_fortran PRIVATE ${ALL_INCLUDE_DIR})
     target_link_libraries(ALL_fortran PUBLIC ${MPI_Fortran_LINK_FLAGS} ${MPI_Fortran_LIBRARIES} ALL)
 
-    install(TARGETS ALL_fortran 
+    install(TARGETS ALL_fortran
+        EXPORT ALLTargets
         RUNTIME DESTINATION bin
         LIBRARY DESTINATION lib
         ARCHIVE DESTINATION lib
@@ -66,11 +78,12 @@ add_executable(Amalgamate Amalgamate.c)
 target_include_directories(Amalgamate PRIVATE ${STB_INCLUDE_DIR})
 set(AMALGAMATED_FILENAME ALL_Amalgamated.hpp)
 add_custom_command(
-	TARGET ALL
-	POST_BUILD
-	COMMAND $<TARGET_FILE:Amalgamate> ${ALL_INCLUDE_DIR}/ALL.hpp ${ALL_INCLUDE_DIR} > ${AMALGAMATED_FILENAME}
-	)
+    TARGET ALL
+    POST_BUILD
+    COMMAND $<TARGET_FILE:Amalgamate> ${ALL_INCLUDE_DIR}/ALL.hpp ${ALL_INCLUDE_DIR} > ${AMALGAMATED_FILENAME}
+    )
 install(
-	FILES ${CMAKE_CURRENT_BINARY_DIR}/${AMALGAMATED_FILENAME}
-	TYPE INCLUDE
-	)
+    FILES ${CMAKE_CURRENT_BINARY_DIR}/${AMALGAMATED_FILENAME}
+    TYPE INCLUDE
+    )
+# vim: sw=4 ts=4 et