tower: add support for artifacts, start refactoring codegen, break makefile