Revise data API
@Virtual => @Abstract
Adds Cached annotation
Some unfinished documentation regarding annotations. cc @balda