initial scaffold
first pass at refactor
refactor completed with deps