added profiling decorator