added serialization IStreamable