state
strategy
add scope test for extendable
template
visitor