Adding some abstractions adding some new tests adding some basic auth functionality