Add 'apply' method, turn into a Factory, drop rAF checks in constructor