broken into components