A declarative approach to Catalyst application building