     params = RequestItems: {}
     items = map items, (item) =>
       item = assign {}, item
-      @_apply_timestamps item
-      @_apply_identifier item
+      _apply_timestamps item if @auto_timestamps
+      _apply_identifier item if @hash_key == 'identifier'
     params.RequestItems[@name] = (PutRequest: Item: item for item in items)
     @_request('batchWrite', params, false).then (results) ->
       items
 
   insert: (item, params={}) ->
     item = assign {}, item
-    @_apply_identifier item
+    _apply_identifier item
     params.condition = 'identifier <> :identifier'
     params.values =  ':identifier': item.identifier
     @put item, params

query_mapping = assign {}, filter_mapping, expression: 'KeyConditionExpression', index: 'IndexName', limit: 'Limit', forward: 'ScanIndexForward'
scan_mapping = assign {}, filter_mapping, limit: 'Limit'

class Model

  constructor: (@name, extension={}) ->


  put: (item, params={}) ->
    item = assign {}, item
    _apply_timestamps item if @auto_timestamps
    _apply_identifier item if @hash_key == 'identifier'
    params = map_parameters params, condition_mapping
    params.Item = item
    @_request('put', params).then (result) ->
