added cache, and field annotation extraction + some tests