added push and util functions