added almost everything