Typed users

Separating user and developer functions into two disparate types
This is good, I have a nasty habit of exporting functions that shouldn't be