first cut of abstracting out operations so theyre extensible
refactored the operation factory