basic functionality code complete