moved serialize/deserialize functionality into extensions