add ctx func