Fixes #2285.
Resolves #2240.
also made the method actually take types as parameter to make it consistent
Also makes username more private, and password completely private.
Closes #2148.