functional obejct tutorial