total refactor
build