structure laid out, add functionality