refactor the heck out of merchant class