More cleaning
Nicer types in push impl