comlpetely rethink init