This is a major work in progress. It mostly works but the code is a mess, so feel free to check it out but it will be changing dramatically soon.