wip
wip
wip
wip
wip
wip
wip
wip
wip
move method
add missing test cases
reimplement Collection::delete()