second commit with improvements : adding start, reset, pause functions