constructors init empty and non-empty