refactor to remove self where not needed