almost working, about to refactor the methods