Add google provider and refactor some class