use named function instead of operator()
add PValProto.sure
add init_size and repr_depth macros
add error messages and handling