Gateway abstraction layer written in Java