 
     propTypes :
         source         : rtypes.object.isRequired
-        default        : rtypes.bool.isRequired
-        set_as_default : rtypes.func.isRequired   # called when this card should be set to default
-        delete_method  : rtypes.func.isRequired   # called when this card should be deleted
+        default        : rtypes.bool  # required for set_as_default
+        set_as_default : rtypes.func  # called when this card should be set to default
+        delete_method  : rtypes.func  # called when this card should be deleted
 
     getInitialState : ->
         confirm_default : false

            key            = {source.id}
            source         = {source}
            default        = {source.id==@props.default}
            set_as_default = {=>@set_as_default(source.id)}   # closure -- must be in separate function from below
            delete_method  = {=>@delete_method(source.id)}
        />


                <Space/><Space/>
                {@props.source.address_zip}
            </Col>
            {@render_action_buttons()}
        </Row>

    render_action_buttons : ->
        if not @props.set_as_default? and not @props.delete_method?
            return
        <Col md=3>
            <ButtonToolbar style={float: "right"}>
                {<Button
                    onClick  = {=>@setState(confirm_default:true)}
                    disabled = {@props.default}
                    bsStyle  = {if @props.default then 'primary' else 'default'}
                >
                    Default
                </Button> if @props.set_as_default? }

                {<Button onClick={=>@setState(confirm_delete:true)}>
                    <Icon name="trash" /> Delete
                </Button> if @props.delete_method? }
            </ButtonToolbar>
        </Col>

    render : ->
        <div style={borderBottom:'1px solid #999',  paddingTop: '5px', paddingBottom: '5px'}>
