merge from ricca509's master branch