one decorator to rule them all