basic implementation of simpler event system