Refactor to take into account the adapters. Test for the three fail-states.