initial pass at basic structures