Working on a much more cohesive API