Implement basic synchronous version