move the parameter callbacks onto a method that custom implementations can also use