update readme and impl singleton