@@ -323,24 +323,22 @@ fn ram(ctx: &mut InterpreterContext, tank: Rc<Noun>) -> Option<String> {
323323 Noun::Cell { p, q, .. } => {
324324 let tag = p.as_atom()?.to_bytes_le();
325325 if tag == b"leaf" {
326− let mut bytes = crip(ctx, q.clone()).ok()?.as_atom()?.to_bytes_le();
326+ let mut bytes = crip(ctx, q.clone()).ok()?.as_bytes()?;
327327 Some(String::from(str::from_utf8_mut(&mut bytes).ok()?))
328328 } else if tag == b"palm" {
329− let (mid, foo) = q.as_cell()?;
330− let (open, foo) = foo.as_cell()?;
331− let (flat_open, foo) = foo.as_cell()?;
332− let (close, tanks) = foo.as_cell()?;
329+ let (spacers, tanks) = q.as_cell()?;
330+ let (mid, open, flat_open, close) = spacers.tuple_4()?;
333331
334− let mut mid = mid.as_bytes()?;
332+ let mut mid = crip(ctx, mid.clone()).ok()?.as_bytes()?;
335333 let mid = String::from(str::from_utf8_mut(&mut mid).ok()?);
336334
337− let mut open = open.as_bytes()?;
335+ let mut open = crip(ctx, open.clone()).ok()?.as_bytes()?;
338336 let open = String::from(str::from_utf8_mut(&mut open).ok()?);
339337
340− let mut flat_open = flat_open.as_bytes()?;
338+ let mut flat_open = crip(ctx, flat_open.clone()).ok()?.as_bytes()?;
341339 let flat_open = String::from(str::from_utf8_mut(&mut flat_open).ok()?);
342340
343− let mut close = close.as_bytes()?;
341+ let mut close = crip(ctx, close.clone()).ok()?.as_bytes()?;
344342 let close = String::from(str::from_utf8_mut(&mut close).ok()?);
345343
346344 let mut target = String::new();
@@ -363,17 +361,16 @@ fn ram(ctx: &mut InterpreterContext, tank: Rc<Noun>) -> Option<String> {
363361
364362 Some(target)
365363 } else if tag == b"rose" {
366− let (mid, foo) = q.as_cell()?;
367− let (open, foo) = foo.as_cell()?;
368− let (close, tanks) = foo.as_cell()?;
364+ let (spacers, tanks) = q.as_cell()?;
365+ let (mid, open, close) = spacers.tuple_3()?;
369366
370− let mut mid = mid.as_bytes()?;
367+ let mut mid = crip(ctx, mid.clone()).ok()?.as_bytes()?;
371368 let mid = String::from(str::from_utf8_mut(&mut mid).ok()?);
372369
373− let mut open = open.as_bytes()?;
370+ let mut open = crip(ctx, open.clone()).ok()?.as_bytes()?;
374371 let open = String::from(str::from_utf8_mut(&mut open).ok()?);
375372
376− let mut close = close.as_bytes()?;
373+ let mut close = crip(ctx, close.clone()).ok()?.as_bytes()?;
377374 let close = String::from(str::from_utf8_mut(&mut close).ok()?);
378375
379376 let mut target = String::new();
@@ -417,9 +414,13 @@ pub fn ram_ttank(ctx: &mut InterpreterContext, ttank: TTank) -> String {
417414 let tank = match tar(ctx, subj.clone(), &q) {
418415 Ok(gate) => match eval_pulled_gate(ctx, gate) {
419416 Ok(tank) => tank,
420− Err(_) => return String::new(),
417+ Err(_) => {
418+ return String::new();
419+ }
421420 },
422− Err(_) => return String::new(),
421+ Err(_) => {
422+ return String::new();
423+ }
423424 };
424425 ram(ctx, tank).unwrap_or(String::new())
425426}