user defered object