the output object can be another object instead of input object