enhanced to require token before access