added transforms/events and redesigned api