extracted decorator util