begin large refactor, arrays, strings, type containers all mostly work