#2 Initial commit. Works so far. Needs more testing.