basic version
works for list version