added step() method