Re-design struct constructor