simplify looping
make DSL classes inherit from BasicObject