use annotations for DI