added extensible JSON encoder