Adding coupling changes, refactor to include factories and builders