param - sub by position named_param - sub by name obj_internal - the values we use are stored inside the object. obj_pos_param - obj passing values by position obj_named_param - obj passed by name