genericizing
tests are passing, closing #49