more boilerplate, added user class