Extracted from level9j/zax into separate project