Add cave and feature predicates, start adding struct cave args to functions