Software Dissection … 
Developers beware of lazyness.If software was a living body I would be wading in blood. I opened up
SnipSnap and started to dissect it, extracting independent components. Every time I find something that looks like a vital organ I cut it out. Luckily until now everything seems to work, thanks to the refactoring abilities of
IntelliJ IDEA.
Now, generally SnipSnap is quite componentized but still there are some cyclic dependencies. Most of them are lazy additions which is a danger every development faces. Featurism is the driving force here.
Well, take the advice and make clearly separated components right from the beginning and keep it that way.