Updated to explicitly define interfaces