begining refactor
start to parameterize