reducing to generic form so it can branch into other projects