Struggling with generic class... design? - C#