correctly handle falsy values, esp. 0