first shot at adding upper bounds throughout