more code, refactor
variables refactor into builder pattern