maybe better performance for decorator