Changed default behavior of returning a function to return the actual function and not the function's result. Can now call  .return(aFunction).asResult() to return the funtion's result. Did some other method refactoring.