Integration work + cleans up toString()