more cleaner code