added recursive hash processing