extendable serialize