made compatible with cacheing and using one less hook now as a bonus