add json serialization with date support