separated methods out int different classes for clarity and expansion to collections