added y-combinator, sort and more