private hooks