[WIP] Refactor/product builder

Bug fix: [yes|no]
Feature addition: [yes|no]
Backwards compatibility break: [yes|no]
Unit test passes: [yes|no]
Behat scenarios passes: [yes|no]
Checkstyle issues: [yes|no]*
ChangeLog updated: [yes|no]