use decorator