Separate concerns. Split up into small packages.