duzy refaktor, IMO uporzadkowalem troche przeplyw eventow wewnatrz *EventProvider + dopisalem pare javadokow objasniajacych po krotce co i jaka metoda robi, LEL