first public upload. MIT License. Unfinished and buggy. Use at your own risk.