put implementation