make definition more robust (no precondition)