added serialization support