took toModel back to a non-callback-based function, maintaining the mapper functions as synchronous