Make use of Java 8 constructs & some cleanup

Seeing as the project started using Java 8, I thought I'd use some of the new constructs, then I started changing other stuff when I saw it and this was the result.