mostly correct version