added specification and test suite