author is BeiYuu & update by kimi