sleep logic