Push implementation
runable. Need tests