add optional size parameter