modified begin so it doesn't infinitely recurse and added support for let and let*