implement cave methods