Java8

Based on work by @phyrworks