switching block KVO framework