first pass at something working
merge with generated