Implementation of "abc bank" and tests by Mark Howroyd