refactor, extra data. Something's wrong though