simplified and extensively commented API