todo decorator-pattern