Initial commit - Mosty working but not fully tested yet.