A learning project for me to explore JavaScript object oriented design patterns and practices.