- general:
	- change directory hierarchy, put src/. Integrate javadoc into build.xml
		test build.xml for generating src-dist package.
	- get latest version of bsh and recompile code and update instructions
	- add license statement
	- these people asked for the code:
		- 24 Apr 2007 12:56:07 +1000 Greg Smith <gsmi5619@usyd.edu.au>, Sydney, Australia
	- adopt ant
	- create a versioning scheme to be put in manifest files of jars
	- make all bsh commands as functions in files that are sourced automatically (like bsh commands)
	- waiting to put bsh files in a uniform place, in jar files?
	+ make backup directories for observations. Include PS files of plots, class files 
		for bot neuroidnet and plots, and saved binary object files. 
	+ make an interface that step()s [utils.Simulation]
- ntr:
	- make Area abstract and derive special subclasses
	- calculate new probabilities and change threshold? (in network.build?)
		- alternatively: make adaptive threshold? (see the new electrical circuit model)
		+ made continuous state machine that drives the discrete state machine
	+ make a SRMNeuroid and move everything out of Neuroid
		- then make the new AdaptiveThresholdNeuroid 
			[ made PeakerNeuroid as intermediate step]
		X Change modeprofile to lookup properties from Mode instances using
			reflection instead of explicit functions for each property. [stupid]
	+ put step inside Neuroid.Mode?
	X move Mode to its own class and make each state a new class. 
		+ keep Mode under neuroid, but extend neuroid and extend Mode inside
		- make new algorithms stand in their own packages, i.e. UMT or SRM?
	X remove debug switch from neuroid [I need it]
	+ make Area take a neuroid template, so that it can instantiate different neuroids
		[ it's taking Class param to instantiate neuroids ]
- packages: 
	- move plot related classes in neuroidnet.ntr to neuroidnet.ntr.plots
	+ move neuroinet independent stuff in neuroinet.ntr.plots.* to utils.plots.* out of neuroidnet!
	+ document and put them on home page for open use (also iterators move'em out)
	+ write package.html, improve documentation to include examples
- graphs
	- make sure plots/profiles are savable
	- add toString to ProfilableDouble
	- set styles for b/w printing
	- make an ErrorBarPlot which takes a min/max/mean profile or vector.
	- remove temporary files after being done
	- add SuperposedPlot
		- do for gnuplot, also improve to return a Plot
		- make labels as legend only for superposed graphs!
		+ done for matlab
	- add multiplots
		- make spike plot more like a plot to use the generalized calls from Grapher
		+ add canned multiplots, e.g. for neuroid: pot, conf, threshold, etc.
		+ separate frames, or superimposed with different legends
	+ add the notion of window number to grapher,
		+ or better associate each plot with its own window (created PlotHandle)
	+ GNUPlot
		+ add setOutputFile() method to grapher to send output as (E)PS [writeEPS()]
	+ put title on matlab graph
		- there's a bug in associating the correct legend [wait for SuperimposedPlot]
	+ modify to produce gnuplot graphs optionally. 
- make debugger-style simulator
	- enable placement of breakpoints
	- enable setting recursive watches to neuroids at deep layers of the net
	+ make a beanshell script to bootstrap bsh.Console with a `neuroidal' environment
		+ use ~/.bshrc that sets env which contains funcs and vars [obsolete]
		+ made a "rc.bsh" that is source'd from ntr.Shell when the interpreter is invoked
 	+ allow watch switches on all objects (corresponding to watching)
		+ every entity should record its activity in a separate object (Profiles)
			+ neuroid saves its fire time, mode: threshold, sugT, confidence
			+ synapse saves its weight, and spike receive time
		+ neuroid, (synapse records info by checking destneuroid)
	+ make a shell read-eval-print loop that drives Base.Network (using BeanShell instead)
	+ that builds the net from another network file but then takes over in simulation()
	+ save the network after build(), use serialization, 
	+ don't save all spikes, just the ones being debugged
	+ allow re-runs (by saving network state in binary with serialization
		(make everything serializable))
- naming:
	+ create a NeuroidName class that holds name, id for neuroids?
		+ Add this to the watchList in Network [no, I put it in beanshell watchedSet]
	+ make watchList a Set.
	X in bsh: before any loading, extract the watchSet of previous net and add it to the loaded one [not really, watchedSet should be kept in bsh, i.e. the SimulationController]
	+ add an id to Synapse according to place in Neuroid.synapses Vector
	+ change all names! neuroid should just mention its number and area name !
		+ toString: name & id
		+ change getStatus to getProperties
		+ getStatus returns transient state
		+ put all of these in an interface and explain
- periphery
	X put concept-area into peripheral object? does it need its step() called? [yes]
	+ make a single sensory area 
	+ move Concept related files to periphery
		+ move ConceptArea to periphery package
		+ ArtificialConcept?
		+ ConceptSaturatedException
+ throw FoundException in Utils.Task to optimize iterations for search 
X extend the Vectors that holds neuroids, etc. so that they show up in organizational descriptions
	- correct way would've been to use templatized types of vectors which doesn't exist in Java
		they're working on it, see bug on "parameterized types"
-errors:
	+ rigid threshold causing problems, need adaptive max taking threshold
	+ spurious concepts, due to infinite weights after ConceptSaturatedException
		+ need better debugging env to tackle these problems [see beanshell]
	+ burst firing, due to primitive refractory effect? [yes] no, infinite weights
	+ sumOfCurrentWeights overflow? [no]
- area name as a concept? or area representing neuroids?
- really use SRM or forward-euler is sufficient?
	- can we mix SRM and diff eqs? I need adaptive threshold. Use exp-euler?
- fix ConcurrentModificationException by waiting for all threads to finish at the end.
- change naming of sensoryneuroid to 'percept'
- implement tzeng's network: allocate all assemblies in input area and create all UMs then prune connections and count 'em!
- solve problem with constant current
- distributed computation:
	- use AxonArbor for dist communication improvement (event-list protocol).
	- Make a remote interface for it.
	- Synapse implement SynapseInt
	+ make Area implement Remote.AreaInt, etc.
? do something about too many updates to the algorithm 
+ limit recruitment by throwing an exception in Concept.attach
+ make neuroidal web page with links to reports of related projects
+ TreeSet or HashSet?
+ enable selection of inhibitory connections and other parameters
+ set global inhibitory connections
+ implement dumpdata in conceptArea
+ Test new synapse scanning constructs for validity.
+ Enable selection of dynamic behavior of groups of neurons (delay + membrane characteristic).
+ migrate functions into AxonArbor.
+ clean and make a new graph figure in matlab graph
+ remove repeating "Concept:"s from the composite names
+ conceptualize inhibitory neuroids!
+ two ways of textualization (expression): 1- static-long (getStatus), 2- dynamic-short (toString) ?
+ add count of neuroids in a concept to its string value!
+ print network info in Netowrk.toString at end of program
+ id? naming neuroids? decide by area vector position? decide at time of `attach'ing to area?
+ add deltaT to Area and use if in algo.s et al.
+ Visualize somehow
+ Give inputs
+ determine constants and run test
+ Complete period calculation in Neuroid.updateWeights()
+ add refractory period and reset potential!
+ parallelize (RMI)
