this feels like such a hack. why not use a return value indicating success/failure rather then void?