some more logic for push