The action language Golog allows specifying the behavior of autonomous systems with very flexible programs that leave certain aspects open to be resolved by the system. Such open aspects are often planning tasks, where the system needs to find a suitable course of actions to reach a given goal. The first part of this thesis aims to make highly efficient planning systems available to the Golog system as sub-solvers for such tasks. The main barrier is that both systems use different formalisms to represent their knowledge about the world and that the basic action theories underlying Golog are much more expressive than the PDDL fragment most commonly used by planning systems. We therefore identify a maximal fragment of basic action theories that can be translated to PDDL. An empirical evaluation shows that Golog systems can impressively benefit from the integration of a planning system. The second part of the thesis concentrates on the internals of the planning systems. The dominant approach in automated planning is heuristic search. For optimal planning, this usually means using the A∗ algorithm with some admissible heuristic. Well-known theoretical analyses suggest that such heuristic search algorithms can obtain better than exponential scaling behavior, provided that the heuristics are accurate enough. We show that for a number of common planning benchmark domains, including ones that admit optimal solution in polynomial time, general search algorithms such as A∗ must necessarily explore an exponential number of search nodes even under the optimistic assumption of almost perfect heuristic estimators, whose heuristic error is bounded by a small additive constant. We therefore argue that other enhancements are necessary to further improve the scaling behavior of optimal heuristic planners. These results do not carry over to satisficing planning, where the system does not need to prove the optimality of the solution. One possibility to better guide the search is to develop new, stronger estimators. Alternatively, we can use multiple existing heuristics concurrently to exploit their complementary strengths. We empirically examine several ways of using multiple heuristics in a satisficing best-first search algorithm to compare their performance in terms of coverage, plan quality and runtime.