Add virtual methods. Changed populate
Make Core Singleton