mostly java 7