do we really need to set @domain, @username and @password in initializer?
we can raise an error if we don't have any of them