implemented protocol + timer