-std=c++11 -Wall -Wextra -Wshadow -W -pedantic -Wno-unused-parameter -Wno-shadow -Wno-unused-function