first working pass
second fixing pass