suppress warning Unused Function
#pragma GCC diagnostic ignored "-Wunused-function"