added decorator && fixed bug