initial go at main functinality