initial import
make it compile, but I'm sure it doesn't work yet
updates
finally working as it should, now for tweaks and stuff
merge ignore