* used nullptr instead of define NULL