Added many endpoints, arg validation, unit tests