this is incomplete, but it's what I can get done today.