because what pytorch really needed was another layer of abstraction to make it even more