refactoring. fix warnings, make things public, make a failing integration test.
gitignore