implemented dirty but almost working annotation processor