Added @Singleton
Reorganised Code