added self timing