partial implement PutAt, also needs testing