basic app framework setup