Refactoring/query property watching

@myabc I think this is dryer and easier to maintain