add delay functionality and others