Moved all should_push functionality into push_api and added tests