refactored after structural format