restructured method