diff --git a/CMakeLists.txt b/CMakeLists.txt
index 39bf343c87325c8bb65d3aa904d6c9eeb0646e14..521afec5d1fcc6ad7ba56a85e26bcc383078ef08 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,163 +1,156 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
+cmake_minimum_required(VERSION 3.1)
 
 # Project properties
-SET(PROJECT_ORG stack-of-tasks)
-SET(PROJECT_NAME dynamic-graph)
-SET(PROJECT_DESCRIPTION "Dynamic graph library")
-SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
+set(PROJECT_ORG stack-of-tasks)
+set(PROJECT_NAME dynamic-graph)
+set(PROJECT_DESCRIPTION "Dynamic graph library")
+set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
 
 # Project options
-OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
+option(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
 
 # Project configuration
-SET(PROJECT_USE_CMAKE_EXPORT TRUE)
-SET(CUSTOM_HEADER_DIR ${PROJECT_NAME})
-SET(CXX_DISABLE_WERROR TRUE)
+set(PROJECT_USE_CMAKE_EXPORT TRUE)
+set(CUSTOM_HEADER_DIR ${PROJECT_NAME})
+set(CXX_DISABLE_WERROR TRUE)
 
 # Doxygen setup
-SET(DOXYGEN_USE_MATHJAX YES)
-SET(DOXYGEN_USE_TEMPLATE_CSS YES)
+set(DOXYGEN_USE_MATHJAX YES)
+set(DOXYGEN_USE_TEMPLATE_CSS YES)
 
 # JRL-cmakemodule setup
-INCLUDE(cmake/base.cmake)
-INCLUDE(cmake/boost.cmake)
+include(cmake/base.cmake)
+include(cmake/boost.cmake)
 
 # Project definition
-COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
-PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
-CHECK_MINIMAL_CXX_STANDARD(14 ENFORCE)
+compute_project_args(PROJECT_ARGS LANGUAGES CXX)
+project(${PROJECT_NAME} ${PROJECT_ARGS})
+check_minimal_cxx_standard(14 ENFORCE)
 
-INCLUDE(cmake/pthread.cmake)  # needs to be included after the CXX definition
+include(cmake/pthread.cmake) # needs to be included after the CXX definition
 
 # Project dependencies
-IF(BUILD_TESTING)
-  FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework)
-ENDIF()
-ADD_PROJECT_DEPENDENCY(Boost REQUIRED COMPONENTS serialization system thread)
-ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED)
-SEARCH_FOR_PTHREAD()
-
-IF(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
+if(BUILD_TESTING)
+  find_package(Boost REQUIRED COMPONENTS unit_test_framework)
+endif()
+add_project_dependency(Boost REQUIRED COMPONENTS serialization system thread)
+add_project_dependency(Eigen3 REQUIRED)
+search_for_pthread()
+
+if(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
   # Silence a warning about a deprecated use of boost bind by boost >= 1.73
   # without dropping support for boost < 1.73
-  ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
-ENDIF()
+  add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
+endif()
 
 # Add configuration headers for plug-ins.
-GENERATE_CONFIGURATION_HEADER(
-  ${HEADER_DIR} config-tracer.hh DG_TRACER tracer_EXPORTS)
-GENERATE_CONFIGURATION_HEADER(
-  ${HEADER_DIR}
-  config-tracer-real-time.hh DG_TRACERREALTIME tracer_real_time_EXPORTS)
+generate_configuration_header(${HEADER_DIR} config-tracer.hh DG_TRACER
+                              tracer_EXPORTS)
+generate_configuration_header(${HEADER_DIR} config-tracer-real-time.hh
+                              DG_TRACERREALTIME tracer_real_time_EXPORTS)
 
 # Verbosity level
-IF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
-  ADD_DEFINITIONS(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG)
-ENDIF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
+if(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
+  add_definitions(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG)
+endif(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
 
 # Main Library
-SET(${PROJECT_NAME}_HEADERS
-  include/${CUSTOM_HEADER_DIR}/fwd.hh
-  include/${CUSTOM_HEADER_DIR}/debug.h
-  include/${CUSTOM_HEADER_DIR}/real-time-logger.h
-  include/${CUSTOM_HEADER_DIR}/real-time-logger-def.h
-
-  include/${CUSTOM_HEADER_DIR}/dynamic-graph-api.h
-
-  include/${CUSTOM_HEADER_DIR}/entity.h
-  include/${CUSTOM_HEADER_DIR}/factory.h
-  include/${CUSTOM_HEADER_DIR}/pool.h
-
-  include/${CUSTOM_HEADER_DIR}/exception-abstract.h
-  include/${CUSTOM_HEADER_DIR}/exception-factory.h
-  include/${CUSTOM_HEADER_DIR}/exception-signal.h
-  include/${CUSTOM_HEADER_DIR}/exception-traces.h
-
-  include/${CUSTOM_HEADER_DIR}/signal.h
-  include/${CUSTOM_HEADER_DIR}/signal-array.h
-  include/${CUSTOM_HEADER_DIR}/signal-base.h
-  include/${CUSTOM_HEADER_DIR}/signal-ptr.h
-  include/${CUSTOM_HEADER_DIR}/signal-time-dependent.h
-  include/${CUSTOM_HEADER_DIR}/signal-ptr.t.cpp
-  include/${CUSTOM_HEADER_DIR}/signal.t.cpp
-  include/${CUSTOM_HEADER_DIR}/time-dependency.h
-  include/${CUSTOM_HEADER_DIR}/time-dependency.t.cpp
-  # Kept for a brittle backward compatiblity.
-  include/${CUSTOM_HEADER_DIR}/signal-caster.h
-  include/${CUSTOM_HEADER_DIR}/signal-cast-helper.h
-  include/${CUSTOM_HEADER_DIR}/all-signals.h
-  include/${CUSTOM_HEADER_DIR}/signal-helper.h
-  include/${CUSTOM_HEADER_DIR}/entity-helper.h
-
-  include/${CUSTOM_HEADER_DIR}/tracer.h
-  include/${CUSTOM_HEADER_DIR}/tracer-real-time.h
-
-  include/${CUSTOM_HEADER_DIR}/command.h
-  include/${CUSTOM_HEADER_DIR}/eigen-io.h
-  include/${CUSTOM_HEADER_DIR}/linear-algebra.h
-  include/${CUSTOM_HEADER_DIR}/value.h
-
-  include/${CUSTOM_HEADER_DIR}/command-setter.h
-  include/${CUSTOM_HEADER_DIR}/command-setter.t.cpp
-  include/${CUSTOM_HEADER_DIR}/command-getter.h
-  include/${CUSTOM_HEADER_DIR}/command-getter.t.cpp
-  include/${CUSTOM_HEADER_DIR}/command-direct-getter.h
-  include/${CUSTOM_HEADER_DIR}/command-direct-setter.h
-  include/${CUSTOM_HEADER_DIR}/command-bind.h
-  include/${CUSTOM_HEADER_DIR}/all-commands.h
-
-  include/${CUSTOM_HEADER_DIR}/logger.h
-  )
-
-SET(${PROJECT_NAME}_SOURCES
-  src/debug/debug.cpp
-  src/debug/real-time-logger.cpp
-  src/debug/logger.cpp
-
-  src/dgraph/entity.cpp
-  src/dgraph/factory.cpp
-  src/dgraph/pool.cpp
-
-  src/exception/exception-abstract.cpp
-  src/exception/exception-factory.cpp
-  src/exception/exception-signal.cpp
-  src/exception/exception-traces.cpp
-
-  src/mt/process-list.cpp
-
-  src/signal/signal-array.cpp
-
-  src/command/value.cpp
-  src/command/command.cpp
-  )
-
-ADD_LIBRARY(${PROJECT_NAME} SHARED
-  ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS})
-MODERNIZE_TARGET_LINK_LIBRARIES(${PROJECT_NAME} SCOPE PUBLIC
-  TARGETS Eigen3::Eigen
-  INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
-TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC Boost::serialization Boost::system Boost::thread)
-
-IF(UNIX)
-  TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS} pthread)
-ENDIF(UNIX)
-
-IF(SUFFIX_SO_VERSION)
-  SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
-ENDIF(SUFFIX_SO_VERSION)
-
-INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
-
-
-SET(DYNAMIC_GRAPH_PLUGINDIR "lib/${PROJECT_NAME}-plugins")
-SET(PACKAGE_EXTRA_MACROS "set(DYNAMIC_GRAPH_PLUGINDIR ${DYNAMIC_GRAPH_PLUGINDIR})")
-SET(PKG_CONFIG_EXTRA "plugindir=${DYNAMIC_GRAPH_PLUGINDIR}")
-
-ADD_SUBDIRECTORY(src)
-IF(BUILD_TESTING)
-  ADD_SUBDIRECTORY(tests)
-ENDIF(BUILD_TESTING)
-
-PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME})
-INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
+set(${PROJECT_NAME}_HEADERS
+    include/${CUSTOM_HEADER_DIR}/fwd.hh
+    include/${CUSTOM_HEADER_DIR}/debug.h
+    include/${CUSTOM_HEADER_DIR}/real-time-logger.h
+    include/${CUSTOM_HEADER_DIR}/real-time-logger-def.h
+    include/${CUSTOM_HEADER_DIR}/dynamic-graph-api.h
+    include/${CUSTOM_HEADER_DIR}/entity.h
+    include/${CUSTOM_HEADER_DIR}/factory.h
+    include/${CUSTOM_HEADER_DIR}/pool.h
+    include/${CUSTOM_HEADER_DIR}/exception-abstract.h
+    include/${CUSTOM_HEADER_DIR}/exception-factory.h
+    include/${CUSTOM_HEADER_DIR}/exception-signal.h
+    include/${CUSTOM_HEADER_DIR}/exception-traces.h
+    include/${CUSTOM_HEADER_DIR}/signal.h
+    include/${CUSTOM_HEADER_DIR}/signal-array.h
+    include/${CUSTOM_HEADER_DIR}/signal-base.h
+    include/${CUSTOM_HEADER_DIR}/signal-ptr.h
+    include/${CUSTOM_HEADER_DIR}/signal-time-dependent.h
+    include/${CUSTOM_HEADER_DIR}/signal-ptr.t.cpp
+    include/${CUSTOM_HEADER_DIR}/signal.t.cpp
+    include/${CUSTOM_HEADER_DIR}/time-dependency.h
+    include/${CUSTOM_HEADER_DIR}/time-dependency.t.cpp
+    # Kept for a brittle backward compatiblity.
+    include/${CUSTOM_HEADER_DIR}/signal-caster.h
+    include/${CUSTOM_HEADER_DIR}/signal-cast-helper.h
+    include/${CUSTOM_HEADER_DIR}/all-signals.h
+    include/${CUSTOM_HEADER_DIR}/signal-helper.h
+    include/${CUSTOM_HEADER_DIR}/entity-helper.h
+    include/${CUSTOM_HEADER_DIR}/tracer.h
+    include/${CUSTOM_HEADER_DIR}/tracer-real-time.h
+    include/${CUSTOM_HEADER_DIR}/command.h
+    include/${CUSTOM_HEADER_DIR}/eigen-io.h
+    include/${CUSTOM_HEADER_DIR}/linear-algebra.h
+    include/${CUSTOM_HEADER_DIR}/value.h
+    include/${CUSTOM_HEADER_DIR}/command-setter.h
+    include/${CUSTOM_HEADER_DIR}/command-setter.t.cpp
+    include/${CUSTOM_HEADER_DIR}/command-getter.h
+    include/${CUSTOM_HEADER_DIR}/command-getter.t.cpp
+    include/${CUSTOM_HEADER_DIR}/command-direct-getter.h
+    include/${CUSTOM_HEADER_DIR}/command-direct-setter.h
+    include/${CUSTOM_HEADER_DIR}/command-bind.h
+    include/${CUSTOM_HEADER_DIR}/all-commands.h
+    include/${CUSTOM_HEADER_DIR}/logger.h)
+
+set(${PROJECT_NAME}_SOURCES
+    src/debug/debug.cpp
+    src/debug/real-time-logger.cpp
+    src/debug/logger.cpp
+    src/dgraph/entity.cpp
+    src/dgraph/factory.cpp
+    src/dgraph/pool.cpp
+    src/exception/exception-abstract.cpp
+    src/exception/exception-factory.cpp
+    src/exception/exception-signal.cpp
+    src/exception/exception-traces.cpp
+    src/mt/process-list.cpp
+    src/signal/signal-array.cpp
+    src/command/value.cpp
+    src/command/command.cpp)
+
+add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES}
+                                   ${${PROJECT_NAME}_HEADERS})
+modernize_target_link_libraries(
+  ${PROJECT_NAME}
+  SCOPE
+  PUBLIC
+  TARGETS
+  Eigen3::Eigen
+  INCLUDE_DIRS
+  ${EIGEN3_INCLUDE_DIR})
+target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
+target_link_libraries(${PROJECT_NAME} PUBLIC Boost::serialization Boost::system
+                                             Boost::thread)
+
+if(UNIX)
+  target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS} pthread)
+endif(UNIX)
+
+if(SUFFIX_SO_VERSION)
+  set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
+endif(SUFFIX_SO_VERSION)
+
+install(
+  TARGETS ${PROJECT_NAME}
+  EXPORT ${TARGETS_EXPORT_NAME}
+  DESTINATION lib)
+
+set(DYNAMIC_GRAPH_PLUGINDIR "lib/${PROJECT_NAME}-plugins")
+set(PACKAGE_EXTRA_MACROS
+    "set(DYNAMIC_GRAPH_PLUGINDIR ${DYNAMIC_GRAPH_PLUGINDIR})")
+set(PKG_CONFIG_EXTRA "plugindir=${DYNAMIC_GRAPH_PLUGINDIR}")
+
+add_subdirectory(src)
+if(BUILD_TESTING)
+  add_subdirectory(tests)
+endif(BUILD_TESTING)
+
+pkg_config_append_libs(${PROJECT_NAME})
+install(FILES package.xml DESTINATION share/${PROJECT_NAME})
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aefe1153853ac8e99079af16cdd4dec3ccf727f6..59a0b0c35eb4f6be4f87a46f602f07162e59dae3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,23 +1,24 @@
-SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
 
-SET(plugins
-  traces/tracer
-  traces/tracer-real-time
-  )
+set(plugins traces/tracer traces/tracer-real-time)
 
-SET(tracer-real-time_deps tracer)
+set(tracer-real-time_deps tracer)
 
-FOREACH(plugin ${plugins})
-  GET_FILENAME_COMPONENT(LIBRARY_NAME ${plugin} NAME)
-  ADD_LIBRARY(${LIBRARY_NAME} SHARED "${plugin}.cpp")
+foreach(plugin ${plugins})
+  get_filename_component(LIBRARY_NAME ${plugin} NAME)
+  add_library(${LIBRARY_NAME} SHARED "${plugin}.cpp")
 
-  IF(SUFFIX_SO_VERSION)
-    SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
-  ENDIF(SUFFIX_SO_VERSION)
-  SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES INSTALL_RPATH $ORIGIN)
+  if(SUFFIX_SO_VERSION)
+    set_target_properties(${LIBRARY_NAME} PROPERTIES SOVERSION
+                                                     ${PROJECT_VERSION})
+  endif(SUFFIX_SO_VERSION)
+  set_target_properties(${LIBRARY_NAME} PROPERTIES INSTALL_RPATH $ORIGIN)
 
-  TARGET_LINK_LIBRARIES(${LIBRARY_NAME} PUBLIC ${PROJECT_NAME} ${${LIBRARY_NAME}_deps})
+  target_link_libraries(${LIBRARY_NAME} PUBLIC ${PROJECT_NAME}
+                                               ${${LIBRARY_NAME}_deps})
 
-  INSTALL(TARGETS ${LIBRARY_NAME} EXPORT ${TARGETS_EXPORT_NAME}
+  install(
+    TARGETS ${LIBRARY_NAME}
+    EXPORT ${TARGETS_EXPORT_NAME}
     DESTINATION ${DYNAMIC_GRAPH_PLUGINDIR})
-ENDFOREACH(plugin)
+endforeach(plugin)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index b323c6c7adb8db4d08ba55b41c95b79942c9261c..5fed2f9f489e901ec3ead199ffc273e159124650 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,46 +1,47 @@
 # Copyright 2010-2020, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS
 
-ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN)
+add_definitions(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN)
 
-ADD_DEFINITIONS(-DTESTS_DATADIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
-ADD_DEFINITIONS(-DTESTS_PLUGINDIR="${LIBRARY_OUTPUT_PATH}")
-ADD_DEFINITIONS(-DTESTS_DYNLIBSUFFIX="${CMAKE_SHARED_LIBRARY_SUFFIX}")
+add_definitions(-DTESTS_DATADIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
+add_definitions(-DTESTS_PLUGINDIR="${LIBRARY_OUTPUT_PATH}")
+add_definitions(-DTESTS_DYNLIBSUFFIX="${CMAKE_SHARED_LIBRARY_SUFFIX}")
 
-MACRO(DYNAMIC_GRAPH_TEST NAME)
-  ADD_UNIT_TEST(${NAME} "${NAME}.cpp")
-  TARGET_LINK_LIBRARIES(${NAME} PRIVATE ${PROJECT_NAME} Boost::unit_test_framework)
-ENDMACRO(DYNAMIC_GRAPH_TEST)
+macro(DYNAMIC_GRAPH_TEST NAME)
+  add_unit_test(${NAME} "${NAME}.cpp")
+  target_link_libraries(${NAME} PRIVATE ${PROJECT_NAME}
+                                        Boost::unit_test_framework)
+endmacro(DYNAMIC_GRAPH_TEST)
 
 # Signal cast test.
-SET(signalcast_libs signal-cast-registerer-libA signal-cast-registerer-libB)
+set(signalcast_libs signal-cast-registerer-libA signal-cast-registerer-libB)
 
-FOREACH(lib ${signalcast_libs})
-  ADD_LIBRARY(${lib} SHARED "${lib}.cpp")
-  TARGET_LINK_LIBRARIES(${lib} PRIVATE ${PROJECT_NAME})
-ENDFOREACH()
+foreach(lib ${signalcast_libs})
+  add_library(${lib} SHARED "${lib}.cpp")
+  target_link_libraries(${lib} PRIVATE ${PROJECT_NAME})
+endforeach()
 
-DYNAMIC_GRAPH_TEST(signal-cast-registerer)
+dynamic_graph_test(signal-cast-registerer)
 
 # Unit testing.
-IF(NOT APPLE)
-  DYNAMIC_GRAPH_TEST(entity)
-ENDIF(NOT APPLE)
-DYNAMIC_GRAPH_TEST(custom-entity)
-DYNAMIC_GRAPH_TEST(factory)
-DYNAMIC_GRAPH_TEST(pool)
-DYNAMIC_GRAPH_TEST(signal-time-dependent)
-DYNAMIC_GRAPH_TEST(value)
-DYNAMIC_GRAPH_TEST(signal-ptr)
-DYNAMIC_GRAPH_TEST(real-time-logger)
-DYNAMIC_GRAPH_TEST(debug-trace)
-DYNAMIC_GRAPH_TEST(debug-tracer)
-TARGET_LINK_LIBRARIES(debug-tracer PRIVATE tracer)
-DYNAMIC_GRAPH_TEST(debug-real-time-tracer)
-TARGET_LINK_LIBRARIES(debug-real-time-tracer PRIVATE tracer-real-time tracer)
-DYNAMIC_GRAPH_TEST(debug-logger)
-DYNAMIC_GRAPH_TEST(debug-logger-winit)
-DYNAMIC_GRAPH_TEST(signal-all)
-DYNAMIC_GRAPH_TEST(command-test)
-DYNAMIC_GRAPH_TEST(test-mt)
-TARGET_LINK_LIBRARIES(test-mt PRIVATE tracer)
-DYNAMIC_GRAPH_TEST(exceptions)
+if(NOT APPLE)
+  dynamic_graph_test(entity)
+endif(NOT APPLE)
+dynamic_graph_test(custom-entity)
+dynamic_graph_test(factory)
+dynamic_graph_test(pool)
+dynamic_graph_test(signal-time-dependent)
+dynamic_graph_test(value)
+dynamic_graph_test(signal-ptr)
+dynamic_graph_test(real-time-logger)
+dynamic_graph_test(debug-trace)
+dynamic_graph_test(debug-tracer)
+target_link_libraries(debug-tracer PRIVATE tracer)
+dynamic_graph_test(debug-real-time-tracer)
+target_link_libraries(debug-real-time-tracer PRIVATE tracer-real-time tracer)
+dynamic_graph_test(debug-logger)
+dynamic_graph_test(debug-logger-winit)
+dynamic_graph_test(signal-all)
+dynamic_graph_test(command-test)
+dynamic_graph_test(test-mt)
+target_link_libraries(test-mt PRIVATE tracer)
+dynamic_graph_test(exceptions)