Flexible Architecture: Our code is divided into three distinct layers