implemented stop(), pause() and unpause()