working on genericizing things