implemented util extend