initial uniqueness validation

Closes #16
Closes #18