Fleshed most of this out