reflection and annotations
java 8