added HandlesAttribute to shortcut a lot of code
replaced providers with HandlesAttributes