bowl now returns String instead of IO (), small recfactors