this is featured in a much larger project that I'm currently making, but I decided to release this seperate so that people who want to can use it.