factory method is working - optimized too