Separated push code into 3 classes