WIP changes API
merged changes and implemented optional clone