pile of changes for building on arm
done refactor, just need to deploy