Typed users

Separating user and developer functions into two disparate types