Old functionality fully ported to hooks