all components serialize now, using generic interface