should we throw an exception?