added simulator implementation