rework so we do not need return