added KVO pragma mark