add authenticate function