some updates to make it semi-working