Whole load of changes and added recursion schemes