creating options and defaults objects for customization along with more detailed code commenting