refractoring, added ace and lots more