better push interface