add an interface for user
change the user class
this is still wrong, but fix several bugs with comments.
fix a few bugs
generify entry