Implement login interface
Merge branch 'login'