Once again tests work and code passes them. Added a lot.