add more terse pp fun
add support for json deserialization