work in progress: work on correctness