most of it in shape for Sessions 2 (need to add dicts!)