added #40
added #26 and #27
added #43