Completed and refactored 04