Day0-4 Cleaned up and reworked to use define-type and type-case