enhanced with a little bit Java 1.7