decorator cleanup + dirtybit refactor