updates a few things needs refactor though