adapting to generic user model