this works except for the stack memory running out
this works
DSL
DSL