Refractor and new scenario
Finished all functions, added new tests
Formatted Join, made it "generic".