First attempt at decorator refactor