One day I was writing code in Java and wanted to use PayPal API. I read the API documentation and saw there was a Java SDK for that purpose but didn't quite like the way the API is used. The calls were relatively easy to use but I prefer a simpler version of accessing the API without knowing the underlying NVP terminology, e.g. have to know the name and values that are applicable for Direct Payment and other api methods. It would be nice to be able to create a DirectPayment object and set the parameters for the call. Hence, I wrote an abstract implementation of the PayPal API using the NVP api documentation as a reference.