implemented private hooks