redoing a large part of the backend to account for more controls