new objects for better API use