rough work in progress... for DSL