refactor
add an initialize method