Fix some types
Add pulse effect and add factory, rename Abstract inot Generic