Update: Needs to be refactored more