mainly self test