add behaviour tests
implement the unique constraint check
release