refactors annotation support