rename *ABC to Base*
rename marshal to serialize