re-implemented sleep op