have testable design complete. Time to flesh out the pure functions