Refactor everything, add shaking, add TCS support