added almoast all functionality