How to write logically correct code