Added singleton and clear some thing up