i had some time so i finished this. more or less lolololrm is...