internal chk and some validation