Initial commit with refactored code from Project 3