revised with OmniAuth functionality