* reorganizes code into proper api/utils/serializer subclasses to keep serialization logic away from regular view logic
* cleans code * reworks many code fragments into smaller methods and split into super class