Need to finish and definitely refactor!!!