implement advance state