rework animations to support multiple styles. move functionality into mixin