refactoring builder so it takes more of data input than classes.