optimized constructors