Przebudowałem kod; zastosowałem interfejs, klasę abstrakcyjną i typy uogólnione (generyczne).