resolved #19, resolved  #29, resolved #35