refactor to make sense....