must check for is_defined