no need to check if val nil [ci skip]