I will look into abstracting the common pieces.