zy: change allCourses and allPractices to multiton pattern
zy: extract transformData out of schedule factory
zy: use printer instead of console.log directly

pass printer from caller interface
zy: refactor replacement using strategy