Refactored old unit tests + several amendments + system unit test resolves #2 resolves #3