Uses event emitters instead of that stupid hash