should probably extend APIException