fixed cosmetic alignment
added types to enum and changed initialization to uniform
removed unused constructor
moved event handling to functor object