Refactoring... add Adviser to allow safe exposure of state for clients