add accessors
design initializer and random item
userstate garbage