first pass. Needs more work.