add auth with twitter, github and goggle. some refactoring