compiled with -Wall - Wextra -pedantic -fimplicit-none -fbounds-check