Split identity creation into separate concern
Changed store entry point to use factory pattern