restructured to match standard gem layout