Enterprise Version
with its repetitive and recursive techniques