User id optimized. There's some redundancy I'll deal with next