Adding the basis for the API detail
Major clean-up and re-factor usage
Move shared functionality in
Baby steps toward the future