unified hooks