Example video player using State pattern