Adapted from MIT-licensed code by chris-creditdesign