compiles on second pass, also at -> substring