refactored commit interface