initial version with OAuth