to simplify this push I won't overly work on the unit tests, we can change them as we need them.