major refactor prompted by realization of problem in decoration