honor readonly recursively