things are nicely separated between main, service, dao, and renderer