both have to be non-null?