break apart objects to better follow SRP