Need to complete writing this.
Initial Commit. Need to add proper error checks.