preparing for better API design