added finishing touches
added logging, added many features
merged