add more tests, cleanup of structure and dependencies