add some mechanics
merged