UserService works with trait GenericProfile instead of BasicProfile

Reasons:
1. Scala doesn't allow to extends case class from case class.
2. Coding into interfaces is good OOP practices