add logger, add options args on each method