Supporting custom annotation readers

Implementation for #372