finished share refactor