more flexible constructor