restructuring into separate package