add deserializer
almost complete