initial implementation
test data and tests