change architecture a little bit