might be nice to interpolate here since it would clean up the code a lot. Totally up to you though...