defensive behaviour should be dev error detect