shaping it up to be a real API