Clean-up, add API, conform to more Java standards, optimize, organize,
etc...