break out the pieces, and test them
way simpler, and correct