Actually fleshed it out; no testing yet