make opening rules dynamic (first pass