components refatoring