work in progress! if you want to contribute, look at the code and/or email the original author!