Add user shells preference, minor refactoring