What I've done so far

Error handling needs work