removed unused constructor, improved enum-based one