Fixes #3
Fixes #1
Fixes #2

Istead of forcing id cleaning based on adapter functionality an
optional boolean argument [$preserveId = null] has been added
Slight API changes