improve class structure, more java 8
more clean up