a kommentezés hiányos, de nagyjából működik a kód.