a small DSL to have better argument testing to bail out earlier