Refactored to use strong pramas and association helper methods