split value gates into constant and variable versions
add hole macro for easier usage