Pull in java 8 implementation, restructure