Refactor the AnnotationHandler and allow custom annotation to be defined