added o & p