add singleton and update readme