Implements several simulators for common dependencies. These abstractions make it easier to write highly-testable code.