adding factory functionality