basic functionality done, re wrote initialization, etc