add self testing