major refactorings to support new app packaging system
use chained accessors to reduce boilerplate code