Moved the partial function stuff around and added more flexible futures