separate oauth procedure from implementaion