fix `& self` issue
use cbox for structs