merge from bgalitsky's own git repo
615 files changed