Design changes, uses C++11 constructors
Converted activation function pointers to functionals