It shouldn't need this many funcs, to be honest.