initial commit with base functionality