initial implementation based on Cerberus prototype