Updated service with a much cleaner API