questionable "put" function, prob doesn't work
some comments