added generic user auth system