#101: Added presenter to enhance flexibility and tidy-up code