Implement checkout as suggested
Split CloneOperation into Base and Clone Operations