Changes in version 3.1.5 (2018-02-25)

New features or changed behaviour of old functions
    o   rotate method for capthist objects
    o   secrlist() returns input secrlist object unchanged
    o   plotMaskEdge() accepts multi-session input
    o   secr.make.newdata() rewritten; acquires logical argument 'all.levels'
    o   predict method for secr objects passes dots argument to secr.make.newdata()
    o   join() intervals optionally passed as attribute 'intervals'
    o   coef method for secrlist objects
    o   unRMarkInput() assumes all freq = 1 if freq field missing
    o   new detectfn 19 (HVP hazard variable power)
    o   RMarkInput ignores 'covariates' argument when no covariates
    o   reduce and subset methods for capthist objects allow nonspatial input and output
        when verify = FALSE
    o   reduce and subset methods for capthist objects honour 'intervals' attribute
    o   summary method for nonspatial capthist objects drops detectors from table of counts
    o   plot method for popn objects acquires new arguments for overlaying multiple sessions
    o   sim.popn() argument sigma.m < 0 causes random relocation
    o   sim.popn() open population recruitment model "multinomial"
    o   LLsurface now a generic function with method for 'secr' objects
    o   new capthist attribute 'sessionlabels' useful for joined capthist
    
Bugs fixed
    o   secr.fit gave misleading estimates with binomial count data when size derived from usage 
        (reported by Mathias Tobler)
    o   predict.secr misreported pmix for other than simple h2 models (pmix = 0.5 for some levels)
    o   detectfnplot() in error when detectfn = 'HAN'
    o   sim.capthist() and sim.resight() failed in 3.1.3 when detector type varied by occasion
    o   make.poly() failed with some polygon list inputs

Other
    o   optional 'interval' attribute of capthist objects renamed 'intervals' (see ?join)
    o   export internal function insertdim()
    o   minor tweaks for compatibility with open population code
    o   NEWS for versions before 3.0.0 archived 
    o   some old documentation removed to online vignette secr-models.pdf

Changes in version 3.1.3 (2017-12-02)

New features or changed behaviour of old functions
    o   secr.design.MS() acquires argument 'contrasts' (used internally)

Bugs fixed
    o   sim.capthist() ignored recapfactor provided in detectpar

Other
    o   region.N now a generic method with functions for secr and secrlist objects
    o   corrected some obsolete documentation references to maptools package

Changes in version 3.1.1 (2017-11-30)

New features or changed behaviour of old functions
    o   new detector type 'capped' in make.grid(), sim.capthist(), reduce(), verify(), secr.fit() etc.
    o   as.data.frame methods for capthist and traps objects
    o   secrlist() and MS.capthist() generate names from input objects
    o   circular.r() and circular.p() acquire argument 'upper' for explicit upper limit of integration
    o   LR.test generalised to any fitted models with a logLik method
    o   plot method for secr objects: confidence limits now computed on log scale 
        for hazard detectfn HHN, HEX etc. to match predict.secr
    o   rbind method for traps adds suffix to names only when needed to avoid any duplication
    o   verify method for capthist objects checks for all-zero histories and missing rownames
    o   summary method for capthist objects: 'terse' option activated for single-session objects
    o   subset method for capthist objects: subset may be defined as function (useful for covariate-based selection)
    o   join() acquires arguments interval, to set between-session intervals directly, and sessions, for session names
    o   secr.fit() details argument 'contrasts' for specialised coding of factor predictors (example in secr-multisession.pdf)
    o   secr.fit() details argument 'newdetector' to override detector type
    o   'newdetector' reported by print.secr

Bugs fixed
    o   predict method for secr objects failed to report SE for parameters with some fixed coefficients (fixedbeta)
    o   verify.capthist failed to report detections at unused detectors

Other
    o   requires package stringr for some functions
    o   class attribute of multisession objects changed to place "list" last -- 
        c("list", "capthist") becomes c("capthist", "list")
    o   LLsurface.secr automatically substitutes lambda0 for g0 given detectfn 14:18
    o   experimental "nontarget" capthist attribute
    o   make.mask() explicit error when capthist passed 
    o   derived is now a generic method with functions for secr and secrlist objects
    o   derived.nj() renamed derivednj(), derived.mash() renamed derivedMash() etc.
    o   && changed to & throughout - should have no effect except fixes verify bug, but be wary

Changes in version 3.1.0 (2017-09-20)

New features or changed behaviour of old functions
    o   par.secr.fit() acquires arguments save.intermediate and LB to allow
        load balancing (thanks to Mathias Tobler)
    o   par.secr.fit() default value of 'seed' changed from 123 to NULL
    o   rbind.popn() now an S3 method; no longer accepts list input
    o   rbind.capthist() now an S3 method
    o   randomHabitat() acquires argument 'seed', saved as an attribute
        (thanks to Erin Peterson)
    o   detectfnplot() acquires argument 'hazard' for plotting hazard 

Other
    o   adjustment to 'ts' predictor for secr.fit mark-resight models
    o   documentation of random number seeds in ?secrRNG
    o   start vector returned by secr.fit now named

Bugs fixed
    o   faulty start vector when model included both h2 and noneuc

Changes in version 3.0.2 (2017-06-07)

New features or changed behaviour of old functions
    o   make.grid() and make.circle() acquire argument 'markocc'
    o   read.traps() accepts Excel xls or xlsx input (requires readxl)

Bugs fixed
    o   plot.secr misleading axis label 'Detection lambda'
    o   sim.resight() could fail with markingmask and predefined popn

Other
    o   imports file_ext from tools package
    o   attributes of output from sim.popn now include Nbuffer and D
    o   speed increase for "count" detectors
    o   miinor adjustments to sim.popn for compatibility R 3.4.0

Changes in version 3.0.1 (2017-05-03)

New features or changed behaviour of old functions
    o   'unresolved' sightings now stored in Tn attribute of capthist
    o   sim.resight() acquires argument 'unresolved'
    o   plot.secrlist() accepts colour vector
    o   new function as.mask() to coerce traps objects for plotting
    o   moves() acquires argument 'names' to control sort order (new default)

Bugs fixed
    o   sightingPlot() legend ignored fill argument

Documentation
    o   addTelemetry omitted 'single' and 'multi' from permitted detectionCH types

Other
    o   discretize() updated for 3.0
    o   native routine registration completed

Changes in version 3.0.0 (2017-04-11)

New features or changed behaviour of old functions
    o   3-D data structure used for trapping data
    o   updateCH() for easy conversion of old data
    o   multiple detector types may be used in one session 
        (point detectors only: single, multi, proximity or count)
    o   marking and sighting occasions may be interspersed
    o   rbind.traps acquires argument 'checkdetector'
    o   user-provided distance matrix may be session-specific
    o   esa 'noccasions' may be less than ncol(usage)
    o   function occasionKey() to embellish petal plots
    o   explicit handling of 'uncertain' sightings Tn
    o   plotMCP() now works with data from point detectors
    o   details$debug in secr.fit() now integer with multiple levels
    o   sightingPlot() new function
    o   plot.capthist() new option "centres"
    o   secr.fit() argument 'details' may be given as character value
    o   telemetrytype attribute of traps objects replaces details$telemetrytype
    o   new addTelemetry() function and revised handling of telemetry data
    o   addTelemetry() allows multi-session data
    o   secr.fit() etc. auto predictor 'tt' nontelemetry vs telemetry occasions
    o   addCovariates() acquires argument 'replace'
    o   c new method for combining secrlist objects
    o   make.capthist() discards repeat detections at exclusive detectors, with a warning
    o   models for polygon or transect detectors requre hazard detection functions 
    o   esa.plot() accepts secrlist as input (curves overlaid)
    o   par.secr.fit() acquires argument 'prefix'
    o   predict.secr() acquires argument 'realnames' to select a subset of 'real' parameters

Bugs fixed
    o   make.grid() did not assign polyID attribute for polygon detectors
    o   snip() and discretize() for transects dropped occasions with no detections
    o   sim.capthist() failed when 'userdist' supplied (non-Euclidean distances)

Other
    o   ovenbird dataset provided with detector type "proximity"
    o   esa() more robust to variation when noccasions specified
    o   new details option 'splitmarked' for resightings (default FALSE)
    o   usagePlot() argument occasion renamed occasions
    o   more compact 'call' component of secr.fit output
    o   discontinued warning when detectfn requires changed parameters (g0 -> lambda0)
    o   plot method for traps enables box around plot (bty = 'o')
    o   plotMaskEdge faster
    o   secr.fit() details savecall = FALSE suppresses call (default in par.secr.fit)
    o   new function shareFactorLevels() to force factor covariates to use the same levels
    o   rgdal::readOGR used instead of deprecated maptools::readShapeSpatial
    o   minor speed improvments for models without learned response
    o   ip.secr() faster default predictorfn
