add authenticate()