Add ability to define custom User implementation