use aeson instead of json for encoding