frontend refactor... still in progress