bigger refactor to auto-add