Finished abstraction and functions.