this method is pretty long, could we split it up? seems like it wouldn't be too difficult to break into a validation method and a request method