add traditional authentication (username / password)
code refactoring (using DRY)