initial code and design work

partial only