Refactored into clean Maven project.