separated put implemented