ControllableVideoPlayer should be an interface