implemented pause() / resume()