Initial commit, needs overhaul yet.