Initial commit: some infrastructure and basic unit tests