added performace timing