```coffeescript
goog.provide 'app.react.Layout'

class app.react.Layout

  ###*
    PATTERN(steida): Here we can choose mobile/tablet/desktop layout.
    @param {app.Routes} routes
    @param {app.react.Header} header
    @param {app.react.Footer} footer
    @constructor
  ###
  constructor: (routes, header, footer) ->

    {div} = React.DOM

    @create = React.createClass

      render: ->
        div className: 'layout',
          header.create()
          @props.page.create()
          footer.create()```

Hide header and footer when song page is shown.
user
```coffeescript
goog.provide 'app.react.Layout'

class app.react.Layout

  ###*
    PATTERN(steida): Layout is responsible for mobile/tablet/desktop look.
    @param {app.Routes} routes
    @param {app.react.Header} header
    @param {app.react.Footer} footer
    @param {app.react.pages.Song} song
    @constructor
  ###
  constructor: (routes, header, footer, song) ->

    {div} = React.DOM

    @create = React.createClass

      render: ->
        page = @props.page
        songPageIsShown = page == song

        div className: 'layout',
          header.create() unless songPageIsShown
          page.create()
          footer.create() unless songPageIsShown```
assistant