arch refactor, step 1 of M