more work on recursive mechanism