Unify action API
Factor out prefetching
Fix tangled logic