added self documenting methods and a little DRYness