Add animation classes, add async events to observable and minor refactoring