should only do initialization if self is not nil