Allow data to be a promise
Do things properly async

I suppose.
Allow uppercase letters I guess