add synchronous functionality