must call end() action too so response is properly serialized