Add version 3 refactored to use methods