add fulltest.sh
use std::pair
modify some detail
move the order of types
use unordered_map and unique_ptr
prepare for memory layout management
add valgrind
move members between private and protected