Convert to Maven
Refactoring and a little code cleaning
Abstracting provider