Added ComponentMap, Component::serialize and Component::deserialize